Javascript 高级程序设计 Ch3

来源:互联网 发布:淘宝返利网源码 编辑:程序博客网 时间:2024/06/07 21:59

Javascript高级程序设计第3版学习

Chap3

基本概念

1、语法

  1. 区分大小写;
  2. 标识符(指变量、函数、属性的名字,或者函数的参数)
    • 第一个字符必须是:字母、下划线(_)或美元符($);
    • 其他的可以是字母、下划线、美元符和数字,按照惯例我们采用驼峰大小写格式;
    • 不能把关键字、保留字、true、false和null作为标识符。
  3. 注释


    // 单行注释
    /*
    * 多行注释
    */

  4. 严格模式
    要启用严格模式可在顶部添加代码
    "use strict";
    也可以指定某个函数在严格模式下执行:

    function doSomething(){      "use strict";    //函数体}  
  5. 语句
    语句要以一个分号(;)结尾,如果省略分号,则由解析器确定语句的结尾,可能正确也可能会错误。

2、关键字和保留字

关键字:

可用于表示控制语句的开始或结束,或者用于执行特定的操作等。

ECMAScript的全部关键字:

|—|—|—|—|
|break|case|catch|class|
|const|continue|debugger|default|
|delete|do|else|export|
|extends|finally|for|function|
|if|import|in|instanceof|
|new|return|super|switch|
|throw|try|typeof|var|
|void|while|with|this|
||||yield

加粗部分为ES6新增

以下关键字只在严格模式中被当成保留关键字:

|—|—|—|
|implements|package|public|
|interface|private|static|
|let|protected||

await 只有在module code时被保留

保留字:

保留字在这门语言中还没有任何特定的用途,但它们有可能在将来被用作关键字。



所以关键字保留字都不能用作标识符。

3、变量

  • var
    • 用var操作符定义的变量将成为定义改变量的作用域中的局部变量;
    • 如果不用var声明,就会是全局变量;
    • 可以用一条语句定义多个变量,只要把每个变量用逗号( , )分开即可。
  • let
  • const

本文基于ES5,所以后两个的介绍,以及三者的对比,之后单独比较。

4、数据类型

  1. typeof操作符:
    ——检测给定变量的数据类型
    返回的值有:
    • undefined–未定义
    • boolean–布尔值
    • string–字符串
    • number–数值
    • object–对象或者null
    • function–函数
  2. Undefined类型:
    Undefined类型只有一个值,即特殊的的undefined。

    一般而言,不存在需要显式地把一个变量设置为undefined值的情况。字面值undefined的主要目的是用于比较

    值和类型是有区别的,如果一个变量我声明了未赋值,那么这个变量的值和类型均为undefined,如果一个变量未声明,那么它的类型是undefined但是并没有值。

  3. Null类型:
    与Undefined类似,是第二个只有一个值的数据类型,即特殊值null。从逻辑看,null值表示一个空对象指针,这也就是为什么用typeof来检测null返回的是“object”的原因。
    undefined值是派生自null值的,所有经常会用如下操作:

    if (car != null){    //对car对象执行某些操作}
  4. Boolean类型:
    只有两个字面值:true和false。

    注意:Boolean类型的字面值true和false是区分大小写的,也就是说True、tRue等都不是Boolean值,只是标识符。

  5. Number类型:
    几种进制:十进制、八进制和十六进制;
    进行算术计算时,所有进制最终都将被转换成十进制数值
    可以保存(+0)和(-0)默认是相等的;

    • 浮点数值:

      if(a+b == 0.3){
      //执行A
      }
      这时,如果a和b是0.05和0.25,或者是0.145和0.155,A都会执行,但如果是0.1和0.2,就不会执行(精度如果高于就可以,相同或者低于都不行?)
      因此,永远不要测试某个特定的浮点数值。(浮点数只计算会产生舍入误差的问题)

    • 数值范围:
      最小数值保存在Number.MIN_VALUE中(大多为5e-324);
      最大数值保存在Number.MAX_VALUE中(大多为1.7976931348623157e+308);
      超出的就会被转换成-Infinity和Infinity
    • NaN:
      即非数值(Not a Number)是一个特殊的数值,这个数值用于表示一个本来要返回熟知的操作数未返回数值的情况(防止抛出错误) (如:任何数值除以非数值会返回NaN)
      它本身有两个特点:一是任何涉及到NaN的操作,结果都会是NaN,NaN和任何值都不相等(NaN ≠ NaN)
      针对NaN的这两个特点,ECMAScript定义了isNaN()函数,接受一个参数,返回是否是数值。
    参数 返回值 参数 返回值 NaN true 10 false “10” false “blue” true true false

    • 数值转换:
      三个函数:Number()、parseInt()和parseFloat()。
      第一个可以用于任何数据类型,后面两个用于把字符串转换成数值。
       Number()函数转换规则
      • 如果是Boolean值返回1和0;
      • 数字则不变;
      • null返回0;
      • undefined返回NaN;
      • 字符串则:
        • 如果字符串包含数字,则将其转换为10进制数值;
        • 如果包含有效浮点格式,则将其转换为对应的浮点数值;
        • 如果包含有效的十六进制,转换为十进制;
        • 如果是空的,不含任何字符,返回0;
        • 除此之外,返回NaN。
      • 如果是对象,则调用typeof()方法,再依照前面的规则来,如果转换的结果是NaN,则调用toString()方法,再次依照上面的规则来。
         parseInt()
        它在转换字符串的时候,更多的是看其是否符合数值模式。它会忽略字符串前面的空格,如果第一个字符不是数字字符或者负号,返回NaN,也就是说parseInt()函数返回空字符不是0。如果是数字或者负号就继续向后直到不是为止。十六进制会返回对应十进制数。
        它的第二个参数可以提供转换时使用的基数(此时可转换8进制,默认不转换八进制(ES5后))
         parseFloat()
        与parseInt基本规则类似,有如下不同:
        第一个小数点有效,后面的无效;
        十六进制数始终返回0,只能解析10进制;
  6. String类型:
    String类型用于表示字符串,可由单双引号表示;

    • 字符字面量
    字面量 含义 \n 换行 \t 制表 \b 退格 \r 回车 \f 进纸 |斜杠 \’ 单引号 \” 双引号 \xnn 以十六进制代码nn表示的一个字符,其中n为0~F \unnnn 以十六进制代码nnnn表示的一个Unicode字符,其中n为0~F

    • 字符串的特点
      ECMAScript中的字符串是不可改变的,字符串一旦创建,它的值就不能改变。要改变某个变量保存的字符串,必须先销毁再用另一个包含新值的字符串填充该变量。
    • 转换为字符串
      toString()。null和undefined没有这个方法。多数情况不必传递参数,不过可以传递:输出数值的基数。
      Sting()。上面的补充,可作用于null和undefined。
      优先用toString();
  7. Object类型:
    ECMAScript中的对象其实就是一组数据和功能的集合。对象可以通过执行new操作符后跟要创建的对象类型的名称来创建。
    Object的每个实例都具有下列属性和方法:

    • constructor : 保存着用于创建当前对象的函数;
    • hasOwnProperty : 用于检查给定的属性在当前对象实例中是否存在;
    • isPrototypeOf(object) : 用于检查传入的对象是否是当前对象的原型;
    • propertyIsEnumerable(propertyName) : 用于检查给定的属性能否使用for-in语句来枚举;
    • toLocalString() : 返回对象的字符串表示,该字符串与执行环境的地区对应;
    • toString() : 返回对象的字符串表示;
    • volueOf() : 返回对象的字符串、数值或布尔值表示。(通常于toString()方法返回值相同)
原创粉丝点击