美文网首页Web前端之路让前端飞
Javascript中的数据类型、值和变量

Javascript中的数据类型、值和变量

作者: softbone | 来源:发表于2017-08-26 07:02 被阅读17次

    JS类型

    原始类型

    数字 字符串 布尔值 null undefined

    对象类型

    Object
    (这些都是Object的子类)Function Array Date Math
    RegExp Number String Boolean

    NaN Infinity

    Js中运算上溢和下溢(计算结果无限接近于0,但比JS能表示的最小值还小时发生的一种情景)都不报错会得到无穷大Infinity和0。负数下溢得到-0.
    0/0 结果为NaN 4/0 为Infinity
    判断是不是NaN x!=x 若为true则x为NaN 或者用isNaN(x) Infinity和
    -Infinity不是NaN

    布尔值

    null undefined 0 -0 NaN ''" " "(空字符串和只有空格的字符串) 以上都会被转换为false。(但是""和" "的长度是不一样的)" "==false; //为true " ".length=1
    其他所有值,空数组,空对象等都会被转换为true
    严格相等运算符 === 不进行类型转换 必须要类型和值都相等才为true
    null == undefined //true
    null === undefined //false
    !!null 隐式类型转换

    包装对象

    数字 字符串 布尔值 的包装对象分别为Number String Boolean
    存取字符串、数字或布尔值的属性时创建的临时对象称为包装对象,临时对象在使用完之后会马上销毁。当下次再存取字符串等的属性时又会重新新建一个临时对象。
    包装对象可以显示的创建
    var s=new String('xxx');

    原始值和对象引用

    原始值是不能改变的,字符串是返回的新的字符串,原字符串是没改变的。
    对象的值是可以修改的。
    两个单独的对象或数组永不相等
    var a=[]; b=[];
    a==b ; //false
    a===b; //false
    a=b;
    a===b//true 对象数组的比较其实是引用变量的比较,当两个引用变量都指向同一个数组或对象时则相等

    变量声明

    var x; //声明一个变量但是没初始化
    var a=1;//初始化变量
    给未声明的变量直接赋值,在严格模式下报错,在非严格模式下,会给全局对象创建一个同名的属性。
    b=1;
    window.b //1

    作用域

    全局作用域和函数作用域 (ES6中有块级作用域)
    在函数内声明的变量只在函数内有定义,在局部作用域里局部变量会覆盖重名的全局变量。

    函数作用域的声明提前

    在函数作用域内声明的所有变量在函数体内都是可见的。这意味着变量在声明之前就已经可用了
    function f(){
    console.log(a); //输出undefined
    var a=1;
    }
    虽然声明会提前,但是变量的赋值还是在原赋值语句处。

    相关文章

      网友评论

        本文标题:Javascript中的数据类型、值和变量

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