美文网首页前端之旅Web前端之路让前端飞
Javascript权威指南看书笔记(一)

Javascript权威指南看书笔记(一)

作者: ST_Pace | 来源:发表于2017-04-22 13:11 被阅读56次

    Javascript权威指南看书笔记

    第一章 词法结构

    • javascript区分大小写,而html不区分大小写

    • unicode转义序列是由/u为前缀加4位16进制数组成

    • 标识符必须以字母,下划线 _,美元符 $,开始

    • 分号:javascript中语句独占一行,通常可以省略语句之间的分号。

        例外:
      
           1. return,break,continue,后紧跟换行,javascript会在换行处补填分号。
      
           2. 双目运算符++,--,若想作为表达式后缀的话必须与表达式同一行。
      

    第二章 类型,值和变量

    • javascript支持十进制和十六进制,因ECMAscript标准不支持八进制直接量,因此最好不要用以0为前缀的直接量

    • Math对象的属性:

            math.round(.6)   //=>1.0 四舍五入
    
            math.ceil(.6)   //=>1.0 向上去整
    
            math.floor(.6)   //=>0.0 向下去整
    
    • 算数运算中的特例

      • 溢出(overflow):数字运算结果超过了javascript所能表示的上限
    正数返回Infinity,负数返回-Infinity
    
       - 下溢(underflow):结果比javascript所能表示的最小数小,返回0,
    
    负数下溢会返回特殊的值’-0’
    
      -  被0整出返回Infinity或-Infinity,例外,0/0返回NaN
    
      - NaN:和任何值都不相等,包括自身
    
    • 判断isNaN()函数
            x!=x;  //仅当x为NaN,为true
    
    • 0和-0值除了作为除数外两个值是相等的

    • 二进制浮点数并不能精确表示类似于0.1的简单数字

            (.2-.1)==(.3-.2);  //=>>false
    
    • 字符串直接量:用单引号来界定字符串时,需格外小心英文中的所有个和缩写,需用(/)转义

      • Javascript和HTML带吗使用各自独立的引号风格

      • Javascript表达式使用单引号表示字符串

      • HTML事件处理属性时用双引号表示字符串

    • 属性:
            s.replace(“h”,”H”); //”hello”=>”Hello”
    
            s.toUpperCase( ); //”hello”=>”HELLO”
    
    • 字符串还可以当作只读数组,通过方括号访问
    • 布尔值:javascript的任意值都可以转化为布尔值

      False:undefined ; null ; 0 ; -0 ; NaN ;‘ ‘
      
      True: 所有其他值,包括所有对象,数组
      
    • Null是javascript的关键字,undefined是预定义的全局变量,“==”认为两者是相等的

    • 包装对象

            var s=”test”;
    
            S.len=4;
    
            Var t=s.len; //undefined
    
        在读取字符串,数字和布尔值的属性(或方法)时,表现得像对象一样。但试图给其属性赋值,则会忽略该操作:修改只发生在临时对象上,而临时对象并未继续保留下来
    
    • 原始值是不可改变的。(undefined,null,布尔值,数字,字符串)

    • 对象的值可通过对象属性来更改(数组,函数)

      • 两个对象包含相同的属性和值也不相等
    • Number()和parseFloat()区别

      • Number():只能用于十进制数转换,并且不能出现非法尾随字符

      • parseInt():会跳过任意数量的前导空格,并忽略后面的内容,第一个非空格字符是非法的数字直接量则返回NaN

    • 所有的对象转换为布尔值都是true

    • 尽管全局作用域编写代码时可以不写var语句,但声明局部变量时必须使用var语句

    • 声明提前:函数体内局部变量遮盖同名全局变量,函数体内的变量声明会提前至函数体顶部

    • 声明一个javascript全局变量时,实际上是定义了全局对象的一个属性

    • javascript中,所有柱子都是浮点型的,除法运算结果也是浮点型

    第三章

    • “===”:当两操作数类型和值都相等。0===-0

    • “==”:若两操作数不是同一类型,会尝试进行类型转换

    • 加号运算符更偏爱字符串;比较运算符更偏爱数字,只有两个数都是字符串时才会进行字符串比较,若一个操作数是NaN,总返回false

    • 大多数情况下 a op= b;等价于a = a op b;当a包含具有副作用的表达式时不等价,eg:data[i++]=2; data[i++]=data[i++]2;

    • typeof(NaN)==”number”;

    • delete只能删除对象属性或数组元素,不像C++中用来删除整个对象

      • delete的操作数若不是左值,不进行操作返回true;若删除成功,返回true

    相关文章

      网友评论

      本文标题:Javascript权威指南看书笔记(一)

      本文链接:https://www.haomeiwen.com/subject/mprszttx.html