JS变量与数据类型

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/github_27546161/article/details/82975303

目录

JS是弱类型语言,意义相同的另一种说法是:ESMAScript的变量是松散类型的。

ECMAScript有5种简单数据类型 + 1种复杂数据类型

typeof 检测数据类型

Undefined

Null

Boolean

Number

 

 

JS是弱类型语言,意义相同的另一种说法是:ESMAScript的变量是松散类型的。


  • 弱类型语言是相对于强类型语言而言的(比如JAVA)。本质区别在于当声明变量时强类型语言会指定这个变量的数据类型,如果后面再给这个变量赋其他数据类型的变量就会出错;相对的,弱类型语言(或者说松散类型)的变量可以用来保存任何类型的数据。

    // eg.
    
    var a = ‘lalala’;
    
    a = 10;            // 有效,但不建议

ECMAScript有5种简单数据类型 + 1种复杂数据类型


  • 简单数据类型:String、Number、Boolean、Null、Undefined

  • 复杂数据类型:Object

typeof 检测数据类型


  • 由于松散类型的特点,JS就需要一种可靠手段来检测变量的数据类型;

  • typeof是操作符,不是函数,可以加括号也可不加;

  • typeof操作符可以返回6种结果:

  • “string”

  • “number"

  • “boolean"

  • “undefined"

  • “object"

  • “function"

  • typeof null 返回 “object”,null被看作一个空的对象

  • 函数在ECMAScript中也是对象而不是一种单独的数据类型,但function在应用中确实又不同于一般对象,就可以用typeof进行区分

Undefined


  • Undefined是一个数据类型,只有一个特殊值:undefined

  • 当使用var声明了变量却没有对它初始化,此时该变量的值默认就是undefined:

    var a;
    
    console.log(a === undefined);        //true
  • 虽然声明不初始化的变量默认值是undefined,但仍和不声明是有区别的:

    var a;
    
    alert(a);        // undefined
    
    alert(b);        // 错误(b is not defined)
  • 有趣的是不管变量是否已经声明,使用typeof操作符判断的结果都是undefined,这在逻辑上是合理的:

    var a;
    
    typeof a;        //undefined
    
    typeof b;        //undefined     

                                                                                                                                                                                                              

Null


  • 与Undefined一样,Null也是只有一个特殊值:null 的数据类型;

  • null表示一个指向空对象的指针,所以typeof null才会返回“object”;

  • undefined派生自null:

    alert(null == undefined);        //true
  • 有一个好习惯:如果要定义一个变量用于未来存放对象,最好初始化为null(如var man = null),这样当需要判断该变量是否已经存放了对象就可以使用man != null来判断;

Boolean


  • Boolean类型只有两个值:true || false,注意:由于JS的大小写敏感,所以True、False或其他true和false带大写字母的任意组合都不是Boolean类型的值,而只是普通标识符;

  • 其他数据类型均可以转换成Boolean类型参与判断、逻辑运算,转换方法有:

    • Boolean( ),参数可以是任意数据类型;

    • !!,利用逻辑非运算符对数据类型的隐式转换,两次使用即可达到与Boolean函数相同的效果;

  • 不同数据类型的值转换成Boolean类型得到的结果:

    • Boolean:

      • true: true

      • false: false

    • Number:

      • 任意非零数字(包括正负∞):true

      • 0或NaN:false

    • String:

      • 任意非空字符串:true

      • 空字符串:false

    • Object:

      • 任何对象:true

      • null:false

    • Undefined:

      • undefined:false

Number


Number类型值得研究的点比较多,单拎一篇文章来讲,点击这句话跳转

String与Object


且听下回分解
 

猜你喜欢

转载自blog.csdn.net/github_27546161/article/details/82975303