JavaScript 权威指南学习记录

2016.1.28

3.1.3JavaScript中的算术运算

    NaN(Not a Number)无法通过x==NaN来判断变量x是否是NaN,相反,应当使用x!=x来判断,当且仅当x为NaN的时候,表达式的结果才是true。

    isFinite(),在参数不是NaN、Infinity或-Infinity的时候返回true。

    负零值与正零值相等,除了作为除数外。

3.3布尔值

    下面这些值会被转换成false:underfined、null、0、-0、NaN、""//空字符串

3.6包装对象

    

        var s ="test";
        x.len=4;
        var t= x.len;
        console.log(t);//返回undefined

 

    第二行代码创建一个临时字符串对象,并给其len属性赋值为4,随即销毁这个对象。最后尝试读取len值,这个属性值自然不存在。存取字符串、数字或布尔值的属性时创建的临时对象称做包装对象

 

        var s ="test";
        var x =new String(s);
        x.len=4;
        var t= x.len;
        console.log(t);//返回undefined      

        console.log(x==s);//返回true,如果===则返回false

3.7不可变得原始值和可变的对象引用

    对象的比较与值的比较是不相同的:即使两个对象包含同样的属性及相同的值,它们也是不相等的。各个索引元素完成相等的两个数组也不相等。

3.8对象转换为原始值

    对象到布尔值:所有的对象(包括数值和函数)都转换为true。

3.10.1函数作用域和声明提前

    JavaScript中使用函数作用域,变量在声明它们的函数体以及这个函数体嵌套的任意函数体内都是有定义的。

    JavaScript函数里声明的所有变量都被"提前"至函数体的顶部。

        var scope ="global";
        function f(){
            console.log(scope);//输出"undefined"
            var scope="local";//变量在这个赋初始值,但变量本身在函数体内任何地方均是有定义的
            console.log(scope);//输出"local"
        }

 

 全局变量和局部变量

    var i =0;//全局变量

     n=0;//全局变量

    function demo(){

        var a =0;//局部变量

        b=0;//全局变量

}

 

你可能感兴趣的:(JavaScript 权威指南学习记录)