JS内置类型易错点

JavaScript 有 7 种内置类型,有分为两大类,基本类型对象(Object)

  • 六种基本类型:null,undefined,string,boolean,number,symbol

JS提供了基本类型的引用类型(包装类):Boolean,Number,String

可以通过者三个引用类型来创建相应的变量

创建一个字符串
var str = new String("text")

tip:通过引用变量生成的具有对象的属性和方法,而字面量不存在

如果给字面量的变量添加方法,它会通过以下的步骤:

var str = "hello"
var str1 = str.substring(2)
--------->
创建String类型的一个实例 
var _str = new String("hello")
在实例上调用指定的方法
var str1 = _str.substring(2)
销毁这个实例
_str = null

同样的如果添加属性:

var str = "text"
str.a = "1"   此时a->new String("1")在执行结束时,就会消失,所以第三行的时候就访问不到了
console.log(str.a) //undefined

typeof 可以检验值的类型 ,返回的类型名都是以字符串方式返回

    console.log(typeof 123);             //"number"
    console.log(typeof (typeof 123));    //"string"
  • 注意null,typeof会返回“object
    console.log(typeof null);             //"object"

关于数值的运算

  • ++前置后置的赋值( -- 一样):后置本身会加,但不会赋值给新变量,前置就会本身加且赋值给新变量
    var a = 100;
    var b = a++;
    console.log(a);     //101
    console.log(b);     //100

    var c = 100;
    var d = ++c;
    console.log(c);     //101
    console.log(d);     //101
  • 无法被类型转换为数字的值与数字运算会输出NaN , 可以用isNaN检验是否为数字,返回的是Boolean,是:false,否:true
    var a = "a" / 2;
    console.log(a);                    //"NaN"
    console.log(isNaN(a));             //true, isNaN且返回的为boolean,而非string

    console.log(typeof a);             //"number"
    console.log(typeof NaN);           //"number",NaN会被typeof识别为number
  • 关于NaN:会被 typeof返回“number”,NaN与数值或者null,undefined(内置方法的关键字除外)运算都是NaN,且它本身不等于自己
    console.log(typeof NaN);             //"number",NaN会被typeof识别为number
    console.log(null + NaN);             //NaN
    console.log(undefined + NaN);        //NaN
    console.log(NaN + 1);                //NaN,NaN与任何数字运算都为NaN
    console.log(NaN == NaN);             //false,NaN与自己不相等
  • 数值的运算: 除数为0的运算结果为正无穷或负无穷, 0/0的结果为NaN
      console.log(1/0);                 //Infinity
      console.log(-1/0);                //-Infinity

      console.log(0.1 + 0.2 === 0.3);   //false 

不同类型之间的运算

      console.log(1 + '2');             //12
      console.log('1' + '2');           //12
      console.log(2 + null);            //2, null会被转化为0
      console.log(2 + undefined);       //NaN, undefined 会被转化为NaN
      console.log(true + true);         //2

undifined , null , '' ,0 ,false 之间的关系

0,false和 '' 之间相互相等,5者其余情况两两均不相等,5者之间两两全不恒等,5者取反皆与true恒等

      console.log(0 == false);                 //true
      console.log('' == false);                //true
      console.log('' == 0);                    //true
      console.log(null == undefined);          //true

        除了以上四种成立,别的都不成立,=== 全部不成立(不相等)

      console.log(true === !'');               //true
      console.log(true === !undefined);        //true
      console.log(true === !null);             //true
      console.log(true === !0);                //true
      console.log(true === !false);            //true

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值