28 JavaScript语言类型&运算符

语言类型:

  弱类型:可以改变变量值和对象类型

  强类型:可以改变变量值不能改变对象类型

  解释型:边编译边执行,速度慢。解释型一般是弱类型

  编译型:先编译再执行(C++\Java),速度快。编译型一般是强类型

JavaScript语言类型:

  解释型弱类型的脚本语言。

 

加法运算:

  任何类型加字符串或者对象(不包括undefined和null)相加,都变成字符串,空数组做加法运算时转换成空串

  对象转成字符为object Object,数组[1,2,3]转换成字符串为'1,2,3'

  如果没有字符类型或者undefined和null之外的对象类型,其他类型加法转换成数值进行运算

 

减法运算:

  任何类型的减法运算都转换成数值运算

 

 一元运算符

    a++; // a = a+1;
    一元运算和累加赋值运算的区别:
       1 一元运算强制将值转换为数值+1
       2 打印a++,先 打印a,再自加。 打印a+=1;a+1,再打印a
       3 ++a,结果和a+=1一样
    从根本上来说,a的结果相同,返回的结果不同
    var x = 1;
    var y = x++ + x + x++ + x++ + x++; // 12,5
    var y = x+ ++x + x + + +x++ + x++; //12,5
  一定要有一个单+号衔接,(x + x ++x报错,右边没有衔接),前断后断都一样
 

关系运算符:

  任何关系运算符都有返回值

大小比较: <、<=、>、>=,返回的是布尔值

  字符字母和字符字母比较:按顺序一一比较单个字母的ascll码值

  字符字母和数字比较:false,相当于和NaN比较,这里'4a'也是NaN,而非按照parseInt转换成4

  字符数字和数字比较:字符数字转换成数值再比较,而非ascll码

比较运算符:返回的是布尔值

  空数组==空字符串==0是true , 空数组!== 0

  0 == false,'' == 0, '' == false

  对象与对象的比较判断的是引用地址,地址不同的对象为false

  特殊情况:undefined == null  是true

  [] == [] , 是false,因为是两个不同的对象

  if(a == null)为真,那么a只能为null或者undefined

  if(a == 0)为真, 那么a只能为0或’‘或false

  [] == '' 为true,[]没办法转换成布尔值,会转换成空串

  [1,2,3] = '1,2,3'是true,数组会转成字符串

  数组与其他非对象类型比较时都会转换成字符串

  数组中如何包含对象,转成字符串对象是object Object

 

逻辑运算符:返回值、熔断机制。会再判断的时候进行运算改变值

&&:

左右为true才为true

左true,则一定返回右

左false返回左,不进行右侧运算

  

||   : 

 左右都为false才为false

如果左为true,直接返回左边,不进行右边的判断

如果左为false,则一定返回右边

        var a = 1;
        a = --a || ++a;// 左边是false,看右边,右边是true,返回右边左边已经进行了运算
        console.log(a);  

 

 

 

posted @ 2019-12-29 18:28  IslandZzzz  阅读(245)  评论(0编辑  收藏  举报