zoukankan      html  css  js  c++  java
  • 前端学习 之 JavaScript基础

    . JavaScript简介

    1. JavaScript的历史背景介绍

    1994年,网景公司(Netscape)发布了Navigator浏览器0.9版。这是历史上第一个比较成熟的网络浏览器,轰动一时。但是,这个版本的浏览器只能用来浏览,不具备与访问者互动的能力。比如,如果网页上有一栏"用户名"要求填写,浏览器就无法判断访问者是否真的填写了,只有让服务器端判断。如果没有填写,服务器端就返回错误,要求用户重新填写,这太浪费时间和服务器资源了。

           因此,网景公司急需一种网页脚本语言,使得浏览器可以与网页互动。工程师Brendan Eich负责开发这种新语言。他觉得,没必要设计得很复杂,这种语言只要能够完成一些简单操作就够了,比如判断用户有没有填写表单。

           1994年正是面向对象编程(object-oriented programming)最兴盛的时期,C++是当时最流行的语言,而Java语言的1.0版即将于第二年推出,Sun公司正在大肆造势。

           Brendan Eich无疑受到了影响,Javascript里面所有的数据类型都是对象(object),这一点与Java非常相似。但是,他随即就遇到了一个难题,到底要不要设计"继承"机制呢?

    如果真的是一种简易的脚本语言,其实不需要有"继承"机制。但是,Javascript里面都是对象,必须有一种机制,将所有对象联系起来。所以,Brendan Eich最后还是设计了"继承"

    但是,他不打算引入""class)的概念,因为一旦有了""Javascript就是一种完整的面向对象编程语言了,这好像有点太正式了,而且增加了初学者的入门难度。

    2.ECMAScriptJavaScript的关系

    199611月,JavaScript的创造者--Netscape公司,决定将JavaScript提交给国际标准化组织ECMA,希望这门语言能够成为国际标准。次年,ECMA发布262号标准文件(ECMA-262)的第一版,规定了浏览器脚本语言的标准,并将这种语言称为ECMAScript,这个版本就是1.0版。

    该标准一开始就是针对JavaScript语言制定的,但是没有称其为JavaScript,有两个方面的原因。一是商标,JavaScript本身已被Netscape注册为商标。二是想体现这门语言的制定者是ECMA,而不是Netscape,这样有利于保证这门语言的开发性和中立性。

    因此ECMAScriptJavaScript的关系是,前者是后者的规格,后者是前者的一种实现。

    3.ECMAScript的历史

    1ECMAScript简介

    ECMAScript是一种由Ecma国际(前身为欧洲计算机制造商协会,英文名称是European Computer Manufacturers Association)通过ECMA-262标准化的脚本程序设计语言。这种语言在万维网上应用广泛,它往往被称为JavaScriptJScript,但实际上后两者是ECMA-262标准的实现和扩展。

    2ECMAScript历史发展

    19986月,ECMAScript 2.0版发布。

    199912月,ECMAScript 3.0版发布,成为JavaScript的通行标准,得到了广泛支持。

    200710月,ECMAScript 4.0版草案发布,对3.0版做了大幅升级,预计次年8月发布正式版本。草案发布后,由于4.0版的目标过于激进,各方对于是否通过这个标准,发生了严重分歧。以YahooMicrosoftGoogle为首的大公司,反对JavaScript的大幅升级,主张小幅改动;以JavaScript创造者Brendan Eich为首的Mozilla公司,则坚持当前的草案。

    20087月,由于对于下一个版本应该包括哪些功能,各方分歧太大,争论过于激进,ECMA开会决定,中止ECMAScript 4.0的开发,将其中涉及现有功能改善的一小部分,发布为ECMAScript 3.1,而将其他激进的设想扩大范围,放入以后的版本,由于会议的气氛,该版本的项目代号起名为Harmony(和谐)。会后不久,ECMAScript 3.1就改名为ECMAScript 5

    200912月,ECMAScript 5.0版正式发布。Harmony项目则一分为二,一些较为可行的设想定名为JavaScript.next继续开发,后来演变成ECMAScript 6;一些不是很成熟的设想,则被视为JavaScript.next.next,在更远的将来再考虑推出。

    20116月,ECMAscript 5.1版发布,并且成为ISO国际标准(ISO/IEC 16262:2011)。

    20133月,ECMAScript 6草案冻结,不再添加新功能。新的功能设想将被放到ECMAScript 7

    201312月,ECMAScript 6草案发布。然后是12个月的讨论期,听取各方反馈。

    2015617日,ECMAScript 6发布正式版本,即ECMAScript 2015

    ECMA的第39号技术专家委员会(Technical Committee 39,简称TC39)负责制订ECMAScript标准,成员包括MicrosoftMozillaGoogle等大公司。TC39的总体考虑是,ES5ES3基本保持兼容,较大的语法修正和新功能加入,将由JavaScript.next完成。

    注:ES6就是指ECMAScript 6

    尽管 ECMAScript 是一个重要的标准,但它并不是 JavaScript 唯一的部分,当然,也不是唯一被标准化的部分。实际上,一个完整的 JavaScript 实现是由以下 3 个不同部分组成的:

    核心(ECMAScript

    文档对象模型(DOMDocument object model (整合jscsshtml)

    浏览器对象模型(BOMBroswer object model(整合js和浏览器)

    简单地说,ECMAScript 描述了JavaScript语言本身的相关内容。

    4.JavaScript特性与优点

    JavaScript 是脚本语言

    JavaScript 是一种轻量级的编程语言。

    JavaScript 是可插入 HTML 页面的编程代码。

    JavaScript 插入 HTML 页面后,可由所有的现代浏览器执行。

    JavaScript 很容易学习。

    5. JavaScript的组成

    JavaScript基础分为三个部分:

    ECMAScriptJavaScript的语法标准。包括变量、表达式、运算符、函数、if语句、for语句等。

    DOM:操作网页上的元素的API。比如让盒子移动、变色、轮播图等。

    BOM:操作浏览器部分功能的API。比如让浏览器自动滚动。

    . 初识JavaScript代码

    1.JavaScript引入方式

    (1)Script标签内写代码

    head标签里面可以写,在body标签里面也可以写,到head标签里面和放到body标签里面是有区别的

    <script>

      // 在这里写你的JS代码

     //console.log('骑士计划!') #f12建打开浏览器的调试窗口,然后在console这个调试台就能看到这个内容了

    </script>

    (2)引入额外的JS文件

    以下是将这一行放在html文件的head部分。对于下面的语句现在type="text/javascript"这个类型也可以去除不写。

    <script type="text/javascript" src="myscript.js"></script>

    2. JavaScript的语法规则

    (1)语法规则

    1.JavaScript的变量名可以使用_,数字,字母,$组成,不能以数字开头。

    2.声明变量使用 var 变量名; 的格式来进行声明

    所有的符号,都是英语的。比如括号、引号、分号。

    (2)注释(注释是代码之母)

    // 这是单行注释

    /*

    这是

    多行注释

    */

    (3)结束符

    JavaScript中的语句要以分号(;)为结束符。也就是说和缩进没关系了

    3.JavaScript在网页中输出信息的写法

    (4)弹出警告框:alert语句

    语法:alert("");

    <script type="text/javascript">

        alert("这是一个警告弹出框")

    </script>

    运行结果:

     

    (2)控制台输出:console.log("")

    console.log("") 表示在控制台中输出。console表示控制台log表示输出

    控制台在Chrome浏览器的F12中。控制台是工程师、程序员调试程序的地方。程序员经常使用这条语句输出一些东西,来测试程序是否正确。

    例:

    <script>

         console.log("这个控制台输出");

    </script>

    运行结果为:

     

    在浏览器的Console里面输出代码中输出的语句内容。

    4.用户输入语句

    prompt() 就是专门用来弹出能够让用户输入的对话框。

    代码如下:

    <script type="text/javascript">

        var a = prompt("今日天气如何?");

        console.log(a);

    </script>

    上方代码中,用户输入的内容,将被传递到变量 a 里面。

    效果如下:

    首先弹框让其输入内容:

     

    然后再console中输出相应的输入内容:

     

    prompt()语句中,用户不管输入什么内容,都是字符串。

    alertprompt的区别:

    alert("这个内容会弹框");                //直接使用,不需要变量

    var a = prompt("请输入内容");   // 必须用一个变量,来接收用户输入的值

    5.直接量:数字和字符串

    “直接量”即常量,也称为“字面量”。看见什么,它就是什么。

    简单的直接量有2种:数字、字符串。

    1)数值的直接量的表达非常简单,写上去就行了,不需要任何的符号。例如:

    alert(886);  //886是数字,所以不需要加引号。

    2)字符串也很简单,但一定要加上引号。可以是单词、句子等。例如:

    alert("Hello");

    alert("Hello world");

    ES6新增const用来声明常量。一旦声明,其值就不能改变。这个东西就是为了定义一个固定的常量,供大家使用,这个常量不会改变。

    const PI = 3.1415;

    PI // 3.1415

    PI = 3

    // TypeError: "PI" is read-only,如果将其改变会出错

    6.变量的定义和赋值

    定义变量:var就是一个关键字,用来定义变量。所谓关键字,就是有特殊功能的小词语。关键字后面一定要有空格隔开。

    变量的赋值:等号表示赋值,将等号右边的值,赋给左边的变量。

    变量名:我们可以给变量任意的取名字。

    PS:在JavaScript中,永远都是用var来定义变量,这和CJava等语言不同

    变量要先定义,才能使用。比如,我们不设置变量,直接输出:

    <script type="text/javascript">

        console.log(a);

    </script>

    会报错:

     

    正确写法:

    var a;   // 定义

    a = 100;  //赋值

    console.log(a);  //输出100

     

    也可以这样写:

    var a = 100;    //定义,并且赋值100

    console.log(a);  //输出100

    ES6新增了let命令,用于声明变量。其用法类似于var,但是所声明的变量只在let命令所在的代码块内有效。例如:for循环的计数器就很适合使用let命令。

    如:

    for (let i=0;i<arr.length;i++){...}

    7. 变量的命名规范

    变量名有命名规范:只能由英语字母、数字、下划线、$(美元符)构成,且不能以数字开头,并且不能是JavaScript保留字。

    下列的单词,叫做保留字,就是说不允许当做变量名,类似于python中的关键字:

    abstract

    booleanbytechar

    class

    const

    debuggerdouble

    enum

    export

    extends

    finalfloat

    goto

    implements

    importint

    interfacelong

    native

    package

    private

    protected

    publicshort

    static

    super

    synchronized

    throws

    transient

    volatile

    大写字母是可以使用的,并且大小写敏感。也就是说Aa是两个变量。

    var A = 250;    //变量1

    var a = 888;    //变量2

    三.JavaScript数据类型

    数据类型包括:基本数据类型和引用数据类型

    基本数据类型指的是简单的数据段,引用数据类型指的是有多个值构成的对象。

    当我们把变量赋值给一个变量时,解析器首先要确认的就是这个值是基本类型值还是引用类型值。

    1.基本数据类型

    在讲数据类型之前,我们要学习一个函数 typeof 表示获取变量的类型,语法为:

    typeof 变量名称

    (1)number数值类型

    例:

    var a = 123;

    //typeof 检查当前变量是什么数据类型

    console.log(typeof a)

    还有一种NaN,表示不是一个数字(Not a Number),也就是说是一个值,但不是数字。

    JavaScript中,只要是数,就是数值型(number)的。无论整浮、浮点数(即小数)、无论大小、无论正负,都是number类型的。

    (2) string字符串类型

    var a = "abcde";

    var b = "路飞";

    var c = "123123";

    var d = "哈哈哈哈哈";

    var e = "";     //空字符串

    console.log("检测是string类型")

    console.log("a:"+typeof a);

    console.log("b:"+typeof b);

    console.log("c:"+typeof c);

    console.log("d:"+typeof d);

    console.log("e:"+typeof e);

    (3) boolean布尔类型

    console.log("检测是bloolean类型:")

    var b1 = false;

    console.log("b1:"+typeof b1)

    var b2= true;

    console.log("b2:"+typeof b2)

    JavaScript中,false类型6

    1.undefined

    2.‘ ’ //空字符串

    3.null

    4.false

    5.NaN //NaN是一个数值,表示一个不能产生正常结果的运算结果,它不能等任何值,包括它自己

    6.数字0 0.0

    (4) null空对象类型

    console.log("检测是null空对象类型")

    var c1 = null;//空对象  object

    console.log("c1:"+c1)

    (5)undefined未定义类型

    console.log("检测是undefined未定义类型")

    var d1;

    //表示变量未定义

    console.log("d1:"+typeof d1)

    2. 引用数据类型

    Function

    Object

    Array

    String

    Date

    后面文档将详细介绍。

    四.运算符

    1. 赋值运算符

    var x = 12,y=5为例:

    运算符

    例子

    等同于

    结果

    =

    x=y

     

    5

    +=

    x+=y

    x=x+y

    x=17

    -=

    x-=y

    x=x-y

    x=7

    *=

    x*=y

    x=x*y

    x=60

    /=

    x/=y

    x=x/y

    x=2

    %=

    x%=y

    x=x%y

    x=2

    最后两个是一个是除等于,一个是取余(模)等于的意思。

    2.算术运算符

    以var a = 5,b=2为例:

    运算符

    描述

    例子

    运算结果

    =

    加法

    var c=a+b

    c=7

    -

    减法

    var c=a-b

    c=3

    *

    乘法

    var c=a*b

    c=10

    /

    除法

    var c=a/b

    c=2.5

    %

    取余

    x=x%y

    c=1

    ++

    自增

    var x=a++

    x=5,a=6

     

     

    var x=++a

    x=6,a=6

    --

    自减法

    var x=a--

    x=5,a=4

     

     

    var x=--a

    x=4,a=4

    注意:

    当运算符++在后面时,先赋值,后自增。

    当运算符++在前面时,先自增,后赋值。

    3.比较运算符

    var x = 5为例:

    运算符

    描述

    例子

    运算结果

    ==

    等于

    x==8,x==5

    false,true

    ===

    等同于(值和类型均相等)

    x===5,x===‘5’

    true,false

    !=

    不等于

    x!=8

    true

    !==

    不等同与(值和类型有一个不同于就false)

    x!==5,x!==‘5’

    false,true

    >

    大于

    x>8

    false

    <

    小于

    x<8

    true

    >=

    大于等于

    x>=8

    false

    <=

    小于等于

    x<=8

    true

    4.特殊的字符串拼接和加减

    (1)字符串拼接

    1

    var firstName = '';

    var lastName = '姐姐';

    var name = '伊拉克';

    var am = '美军';

    // 字符串拼接

    var tempStr = "2003320," + name + "战争爆发,以美军为主的联合部队仅用20多天就击溃了萨达姆的军队。这是继十多年前的海湾战争后," + am + "又一次取得的大规模压倒性军事胜利。"

    console.log(tempStr);

    var fullName = firstName + " " + lastName;

    console.log(fullName);

    运行结果为:

     

    2

    // 不能对字符串进行+运算 只能拼接

    var a1 = '1';

    var a2 = '2';

    console.log(a1+a2) //输出字符串相加的内容

    console.log(typeof(a1+a2))  //输出字符串相加的类型

    运行结果为:

     

    (2)字符串加Number

    1

    var a1 = 1;

    var a2 = '2';

    console.log(a1+a2) //输出字符串相加的内容

    console.log(typeof(a1+a2))  //输出字符串相加的类型

    (3)字符串相乘除

    var b1 = 'one';

    var b2  = 'two';

    // NaN ==== not a number number类型

    console.log(b1*b2)  // NaN

    console.log(b1/b2)  // NaN

    console.log(typeof(b1*b2))  // number

    console.log(typeof(b1/b2))  // number

    运行结果:

     

    注意:虽然两个字符串相加减得到的结果是NaN,但是也是属于Number类型的数据。

    .数据类型的强制转换

    1. 将数值类型转换为字符串类型

    number -----> string

    (1)隐式转换

    1

    var n1 = 123;

    var n2 = '456';

    var n3 = n1+n2;

    // 隐式转换为字符串

    console.log(typeof n3);

    (2)强制类型转换

    2

    var n1 = 123;

    // 强制类型转换String(),toString()

    var str1 = String(n1);

    console.log(typeof str1);

    var num = 234;

    console.log(num.toString())

    2.将字符串类型转换成数值类型

    string -----> number

    3

    var strNum = "123.45dfsdfsd";

    var num = Number(strNum);

    console.log(num);  // NaN

    console.log(typeof num);  // number

    // parseInt()可以解析一个字符串 并且返回一个整数

    console.log(parseInt(strNum);  // 123

    console.log(typeof(parseInt(strNum)));  // number

    // parseFloat()可以解析一个字符串 并且返回一个浮点数

    console.log(parseFloat(strNum);  // 123.45

    console.log(typeof(parseFloat(strNum)));  // number

    3.任何数据类型都可以转为布尔类型

    * -----> boolean

    4

    var num1 = 123;

    var num2 = 0;

    var num3 = -123;

    var a1 = NaN;

    var a2;

    var a3 = null;

    // 数字非零即为真。

    console.log(Boolean(num1);  // true

    console.log(Boolean(num2);  // false

    console.log(Boolean(num3);  //true

    console.log(Boolean(a1);  // false

    console.log(Boolean(a2);  // false

    console.log(Boolean(a3);  // false

    .流程控制

    1.if控制语句

    if语句表示,如果括号里面的条件成立那么运行紧接着的后面的大括号{}里面的代码,

    出现的if多分支语句,满足哪个分支条件就运行哪个分支后{}的代码,多分支语句之间的条件不能冲突,即条件只能满足其中一个。

    (1)if(判断条件){代码1,2...}

    1

    var age = 18;

    if (age >= 18){

        console.log("恭喜你,可以去网吧玩游戏了!");

    }

    (2)if(判断条件){代码1,2...}else{代码1,2...}

    2:

    var age = 17;

    if (age >= 18){

        console.log("恭喜你,可以网吧玩游戏了!");

    }else{

        console.log("好好上学吧!");

    }

    (3)if(条件1){代码1,2...}else if(条件1,2){代码1,2...}else(条件3){代码1,2...}

    3:

    var age = 5;

    if (age >= 18){

        console.log("恭喜你,可以去网吧玩游戏了!");  

    }else if(age<6){

        console.log("好好玩耍吧!");

    }else{

        console.log("好好上学吧!");

    }

    if (true) {

       //满足条件执行

    }else if(true){

        //满足条件执行            

    }else if(true){

       //满足条件执行        

    }else{

      //满足条件执行

    }

    else if的分支可以为很多个。

    2.逻辑运算符(与或非)

    与:&&

    或:||

    非:!

    例:

    var sex = "";

    var age = 22;

    var hobby = "吹管乐";

    var flag = false; // 是否有男朋友

    if (age >= 18 && sex == "") {

        console.log("妙龄少女");

    }

    if (age >= 18 || hobby == "吹管乐") {

        console.log("凑合吧");

    }

    if (!flag){

        console.log("这是机会。");

    }

    3.switch语句

    例:

    var age = 25;

    switch (age) {

    //case表示一个条件 满足这个条件就会走进来 遇到break跳出。如果某个条件中不写 break,那么直到该程序遇到下一个break停止

        case 18:

            console.log("已经成年了,需要独立了。");

            break;

        case 60:

            console.log("需要回家养老了!");

            break;

        case 25:

            console.log("奋斗的年龄!");

            break;

        default:

            console.log("这个不好说");

            break;

    }

    4. while循环

    循环三步走:

    1.初始化循环变量

    2.判断循环条件

    3.更新循环变量

    while(条件){

    //运行相关代码

    //改变循环原来的量,如果不改变会死循环

    //

    }

    1

    var i = 1; //初始化循环变量

    while(i<=9){ //判断循环条件

        console.log(i);

        i++; //更新循环条件   等同于i=i+1

    }

    2(死循环例子)

    var i = 1; //初始化循环变量

    while(i != 0){ //判断循环条件

        console.log(i);

        i++; //更新循环条件   等同于i=i+1

    }

    2出现死循环,短时间会出现内存占用100%现象。

    5.do{...}while(条件)

    例:

    //不管有没有满足while中的条件do里面的代码都会走一次

    var i = 3;//初始化循环变量

    do{

        console.log(i)

        i++;//更新循环条件

    }while (i<10) //判断循环条件

    6.for循环

    (1)单个for循环

    1:打印110

    for(var i = 1;i<=10;i++){

     console.log(i)

    }

    2:打印1--100的偶数。

    // 打印1--100的偶数。

    for(var i = 1;i<=100;i++){

        if(i%2==0){

            //是偶数

            console.log(i)

        }

    }

    (2)双层for循环

    例:

    for (var i = 1; i <= 5; i++) { // 行数

            for (var j = 0; j < 6; j++) {// 每行的列数

                document.write('*')

            }

            document.write('<br>')

        }

    运行效果:

     

    .常用内置对象

    JavaScript 中的所有事物都是对象:字符串、数值、数组、函数...此外,JavaScript 允许自定义对象。

    JavaScript 提供多个内置对象,比如 NumberStringDateArray 等等,通过new实例化的对象都是object类型(var s = new String('hello')var n = new Number(12)),数组不需要new生命,类型就是object类型。

    对象只是带有属性和方法的特殊数据类型。

    1. 数组Array

    数组对象的作用是:使用单独的变量名来存储一系列的值。类似于Python中的列表。

    (1)数组的创建方式

    a.字面量方式创建(推荐大家使用这种方式,简单粗暴)

    var arr = ["alex", "egon", "yuan"];

    b.使用new关键词

    使用构造函数(需要自己了解)的方式创建 使用new关键词对构造函数进行创建对象

    var arr = new Array();

    (2)数组的赋值

    通过下标进行一一赋值

    例:

    var arr = [];

    //通过下标进行一一赋值

    arr[0] = 123;

    arr[1] = '哈哈哈';

    arr[2] = '嘿嘿嘿'

    (3)数组的常用方法

    a.数组的合并 concat()

    例:

    var north = ['北京','山东','天津'];

    var south = ['东莞','深圳','上海'];

    var newCity = north.concat(south);

    console.log(newCity)  //输出结果: ["北京", "山东", "天津", "东莞", "深圳", "上海"]

    b. join()

    将数组中的元素使用指定的字符串连接起来,它会形成一个新的字符串

    例:

    var score = [98,78,76,100,0];

    var str = score.join('|');

    console.log(str);// 输出结果:98|78|76|100|0

    c.将数组转换成字符串 toString()

    例:

    var score = [98,78,76,100,0];

    //toString() 直接转换为字符串  每个元素之间使用逗号隔开

               

    var str = score.toString();

    console.log(str);//98,78,76,100,0

    d.slice切割

    slice(start,end); 返回数组的一段,左闭右开

    例:

    var arr = ['张三','李四','王五','赵六'];

    var newArr  = arr.slice(1,3);

    console.log(newArr);//结果为:["李四", "王五"]

    e. pop 元素

    pop数组的最后一个元素并返回删除的元素

    例:

    var arr = ['张三', '李四', '王五', '赵六'];

    var item = arr.pop();

    console.log(arr);//["张三", "李四""王五"]

    console.log(item);//赵六

    f.push添加元素

     push() 向数组末尾添加一个元素或多个元素,并返回新的长度

    1:添加一个元素

    var arr = ['张三', '李四', '王五', '赵六'];

    var newLength = arr.push('铁蛋');//可以添加多个,以逗号隔开

    console.log(newLength);//5

    console.log(arr);  //结果为:["张三", "李四", "王五", "赵六", "铁蛋"]

    2:添加两个元素

    var arr = ['张三', '李四', '王五', '赵六'];

    var newLength = arr.push('铁蛋','铁锤');//可以添加多个,以逗号隔开

    console.log(newLength);//6

    console.log(arr);  //结果为:["张三", "李四", "王五", "赵六", "铁蛋", "铁锤"]

    g.reverse() 翻转数组

    reverse() 使得数组的元素顺序倒过来排序。

    例:

    var arr = ['张三', '李四', '王五', '赵六'];

    //反转数组

    arr.reverse();

    console.log(arr); //结果为: ["赵六", "王五", "李四", "张三"]

    h.sort对数组排序

    sort对数组中的元素进行排序,排序的规则是首字符按照ASSCII码来排序优先,如果第一个字符相同将比较第二个字符,依次类推。

    例:

    var names = ["one", "two", "three", "five"];

    names.sort();

    console.log(names);  //结果为:["five", "one", "three", "two"]

    i.判断是否为数组isArray()

    布尔类型值 = Array.isArray(被检测的值);

    j.shift()

    shift()删除数组第一个元素并返回该元素

    例:

    var names = ["zero", "one", "two", "three"];

    var a = names.shift();

    console.log(a);  // zero

    console.log(names);  // 数组剩余: ["one", "two", "three"]

    k.unshift()

    unshift() 向数组的开头添加一个或更多元素,并返回新的长度

    例:

    var names = ["zero", "one", "two", "three"];

    var newLength = names.unshift('four');//可以添加多个,以逗号隔开

    console.log(newLength);//5

    console.log(names); // ["four", "zero", "one", "two", "three"]

    2.字段串String

    字符串方法有: 

    (1)chartAt() 返回指定索引的位置的字符

    例:

    var str = 'zero';

    var charset = str.charAt(2); //索引的位置是从0开始  

    console.log(charset);//输出结果为:r

    (2)concat 返回字符串值,表示两个或多个字符串的拼接

    :

    var str1 = 'ze';

    var str2  = 'ro';

    console.log(str1.concat(str2));//输出结果为:zero

    st1的值和str2的值进行拼接

    (3)replace(a,b) 

    将字符串a替换成字符串b

    例:

    var a = '1234567755';

    var newStr = a.replace("23456","****");

    console.log(newStr);//1****7755

    例题将23456的值替换成****,也可以替换成其他的字符串

    (4)indexof()

    indexof()查找字符的下标,如果找到返回字符串的下标,找不到则返回-1 。跟seach()方法用法一样。

    例:

    var str = 'zero';

    console.log(str.indexOf('e'));// 找到了e返回:1

    console.log(str.indexOf('p'));//没有找到p返回:-1

    (5)slice(startend)

    slice(startend) 提取一个字符串的一部分,并返回一新的字符串。左闭右开 分割字符串

    例:

    var str = 'study javascript';

    console.log(str.slice(3,10)); //结果输出: dy java

    (6)split()

    split('a',1)以字符串a分割字符串,并返回新的数组。如果第二个参数没写,表示返回整个数组,如果定义了个数,返回新数组(数组里的元素个数就是定义的个数)。

    例:

    var  str =  '今天适合学习JavaScript';

    console.log(str.split('a'));  // ["今天适合学习J", "v", "Script"]

    console.log(str.split('a', 1));  // ["今天适合学习J"]

    (7)substr(start,length)

    substr(start,length) 返回一个字符串中从指定位置开始到指定字符数的字符。

    例:

    var  str =  '今天适合学习JavaScript';

    console.log(str.substr(0,4));// 结果为:今天适合

    (8) toLowerCase()转小写

    例:

    var str = 'JavaScript';

    console.log(str.toLowerCase()); //输出结果:javascript

    (9)toUpperCase()转大写

    例:

    var str = 'JavaScript';

    console.log(str.toUpperCase());  //输出结果为:JAVASCRIPT

    (10)trim() 去除字符串两边的空白

    例:

    var str = '    JavaScript    ';

    console.log(str);  //去除之前打印

    console.log(str.trim()); //去除之后打印

    运行的的结果如图:

     

    特别:

    // 四舍五入

    var num = 132.62522;

    var newNum1 = num.toFixed();

    console.log(newNum1); //133

    var newNum2 = num.toFixed(2);

    console.log(newNum2); //132.63

    3.Date日期对象

    创建日期对象只有构造函数一种方式,使用new关键字

    //创建了一个date对象

    var myDate = new Date();

    关于时间对象的语法请见下图:

    //创建日期对象

    var myDate=new Date();

    console.log(myDate.getDate());  //输出月份的第几天

    console.log(myDate.toLocaleString()); //输出包括年月日的时间

        

    4.Math内置对象

    常用内置对象有如下表:

    方法

    含义

    Math.floor()

    向下取整,称为“地板函数”

    Math.ceil()

    向上取整,称为“天花板函数”

    Math.max(a,b)

    求a和b的最大值

    Math.min(a,b)

    求a和b的最小值

    Math.random()

    随机数,默认产生0-1之间的随机数

    (1)Math.ceil() 向上取整,'天花板函数'

    例:

    var x = 1.234;

    //天花板函数  表示大于等于 x,并且与它最接近的整数是2

    var a = Math.ceil(x);

    console.log(a);//2

    (2)Math.floor 向下取整,'地板函数'

    例:

    var x = 1.234;

    // 小于等于 x,并且与它最接近的整数 1,也称为去尾

    var b = Math.floor(x);

    console.log(b);//1

    (3)求两个数的最大值和最小值

    例:

    //求 两个数的最大值 最小值

    console.log(Math.max(2,5));//5

    console.log(Math.min(2,5));//2

    (4)随机数 Math.random()

    请记住公式:min - max之间的随机数: min+Math.random()*(max-min)

    1

    var ran = Math.random();

    console.log(ran);[0,1]之间的随机小数

    2:  

    如果让你取100-200之间的随机数,怎么做?

    var res = 100+Math.random()*(200-100)

    console.log(res);

    5.JSON对象

    (1)JSON的作用

    JSON 是用于存储和传输数据的格式。

    JSON 通常用于服务端向网页传递数据 。

     JSON 使用 JavaScript 语法,但是 JSON 格式仅仅是一个文本。

    文本可以被任何编程语言读取及作为数据格式传递。

    (2)什么是JSON

    JSON 英文全称 JavaScript Object Notation

    JSON 是一种轻量级的数据交换格式。

    JSON是独立的语言 *

    JSON 易于理解。

    (3)JSON 实例及JSON 字符串与 JavaScript 对象相互转换

    例:

    var str1 = '{"name": "hsz", "age": 24}';

    var obj1 = {"name": "hsz", "age": 24};

    // JSON字符串转换成对象

    var obj = JSON.parse(str1);

    console.log(obj);  //{name: "hsz", age: 24}

    // 对象转换成JSON字符串

    var str = JSON.stringify(obj1);

    console.log(str); //{"name":"hsz","age":24}

    (4)JSON 格式化后为 JavaScript 对象

    JSON 格式在语法上与创建 JavaScript 对象代码是相同的。

    由于它们很相似,所以 JavaScript 程序可以很容易的将 JSON 数据转换为 JavaScript 对象。

    (5)JSON 语法规则

    数据为 /值 对。

    数据由逗号分隔。

    大括号保存对象。

    方括号保存数组。

    JSON 数据 - 一个名称对应一个值

    JSON 数据格式为 键/值 对,就像 JavaScript 对象属性。

    /值对包括字段名称(在双引号中),后面一个冒号,然后是值:

    "name":"hsz"

    (6)JSON 对象与数组

    JSON 对象保存在大括号内。

    就像在 JavaScript , 对象可以保存多个 键/值 对:

    {"name":"hsz", "age":24}

    JSON 数组保存在中括号内。

    就像在 JavaScript , 数组可以包含对象:

    "sites":[

        {"name":"hsz", "age":24},

        {"name":"zero", "age":20},

        {"name":"one", "age":30}

    ]

    在以上实例中,对象 "sites" 是一个数组,包含了三个对象。

    如果还需要学习更多关于js的常用对象,请参考链接:http://www.runoob.com/jsref/jsref-tutorial.html

    八.函数

    函数:就是将一些语句进行封装,然后通过调用的形式,执行这些语句。

    函数的作用:

    将大量重复的语句写在函数里,以后需要这些语句的时候,可以直接调用函数,避免重复劳动。

    简化编程,让编程模块化。

    例:

    console.log("hello world");

    sayHello();     //调用函数

    //定义函数:

    function sayHello(){

        console.log("hello");

        console.log("hello world");

    }

    运行结果为:

     

    1. 第一步定义函数

    函数定义的语法:

    function 函数名字(){

        //函数体内容  

    }

    解释如下:

    function:是一个关键字。中文是函数功能

    函数名字:命名规定和变量的命名规定一样。只能是字母、数字、下划线、美元符号,不能以数字开头。

    参数:后面有一对小括号,里面是放参数用的。

    大括号里面,是这个函数的语句。

    2. 函数的调用

    函数调用的语法:

    函数名字();

    3. 函数的参数

    函数的参数包括形参和实参

    注意:实际参数和形式参数的个数,要相同。

    例子:

    //函数:求和

    function sum(a, b) {

        console.log(a, b); //打印ab的值

        // console.log(arguments); //

        console.log(a + b); //

    }

    sum(3, 4);  //3 4 7

    sum("3", 4);//3 4 34

    sum("Hello", "World"); //打印结果:Hello World HelloWorld

    4. 函数的返回值

    例子:

    console.log(sum(3, 4));  //打印结果为:7

    //函数:求和

    function sum(a, b) {

        return a + b;

    }

    . 伪数组 arguments

    arguments代表的是实参。有个讲究的地方是:arguments只在函数中使用。

    1.返回函数实参的个数:arguments.length

    例子:

    function fn(a,b,c) {

        console.log(arguments);

        console.log(fn.length);         //获取形参的个数

        console.log(arguments.length);  //获取实参的个数

        console.log("----------------");

    }

    fn(2,4);

    fn(2,4,6);

    fn(2,4,6,8);

     

    2.伪数组的注意点

    之所以说arguments是伪数组,是因为:arguments可以修改元素,但不能改变数组的长短。

    举例:

    function fn(a,b) {

        arguments[0] = 99;  //将实参的第一个数改为99

        arguments.push(8);  //此方法不通过,因为无法增加元素,会报错

    }

    fn(2,4);

    fn(2,4,6);

    fn(2,4,6,8);

    清空数组的几种方式:

    var array = [1,2,3,4,5,6];

    array.splice(0);      //方式1:删除数组中所有项目

    array.length = 0;     //方式2length属性可以赋值,在其它语言中length是只读

    array = [];           //方式3:推荐

  • 相关阅读:
    node中npm安装模块的网络问题
    微信开发
    7-49 打印学生选课清单 (25 分) 数据结构与算法题目集(中文)
    7-53 两个有序序列的中位数 (25 分) 数据结构与算法题目集(中文)
    练习4.2 平衡二叉树的根 (25 分) 浙大版《数据结构(第2版)》题目集
    习题4.3 是否二叉搜索树 (25 分) 浙大版《数据结构(第2版)》题目集
    实验3-1 求一元二次方程的根 (20 分) 《C语言程序设计实验与习题指导(第3版)》
    主元素问题
    未出现的最小正整数
    交换两个线性表位置(或循环移动数组元素)
  • 原文地址:https://www.cnblogs.com/hszstudypy/p/11086789.html
Copyright © 2011-2022 走看看