3.JS( 三 )

  • 自动转换
    // 所谓的自动转换,其实弱类型中的变量会根据当前代码的需要,进行类型的自动隐式转化 var box1 = 1 + true; // true 转换成数值,是1, false转换成数值,是0 console.log(box1); // 2  var box2 = 1 + "200"; console.log(box2); // 1200 原因是,程序中+的含义有2种,第一: 两边数值相加, 第二: 两边字符串拼接.但是在js中运算符的优先级中, 字符串拼接的优先级要高于数值的加减乘除,所以解析器优先使用了+号作为了字符串的拼接符号了,因为程序就需要+号两边都是字符串才能完成运算操作,因此1变成字符串最终的结果就是 "1" +"200"  var box3 = 1 - "200"; console.log(box3); // -199;因为-号中表示的就是左边的数值减去右边的数值,因此程序就会要求"200"是数值,因此内部偷偷的转换了一下
  • 5.运算符/*//算术运算符       +   数值相加       -   数值相减       *   数值相乘       /   数值相除       %   数值求余       **  数值求幂       a++ 数值后自增1   a=a+1       ++a 数值前自增1   a=a+1       b-- 数值后自减1   b=b-1       --b 数值前自减1   b=b-1//赋值运算符       =       +=       -=       *=       /=       %=       **=//比较运算符,比较的结果要么是true, 要么是false      >   大于      <   小于      >=  大于或者等于      <=  小于或者等于      !=  不等于[计算数值]      ==  等于[计算]      !== 不全等[不仅判断数值,还会判断类型是否一致]      === 全等[不仅判断数值,还会判断类型是否一致]//逻辑运算符      &&   并且  and    两边的运算结果为true,最终结果才是true      ||   或者  or     两边的运算结果为false,最终结果才是false      !    非    not    运算符的结果如果是true,则最终结果是false ,反之亦然.  //逻辑运算符进阶用法:     1. 实现短路        var a = false || 2      >>> a = 2        var a = true && "hehe"  >>>  a = "hehe"     2. 快速布尔化[把数据快速转换成布尔类型]        var a = 100        !!a  >>> true//条件运算符[三目运算符]             条件?true:false     例如:          var age = 12;        var ret = age>=18?"成年":"未成年"; // 相当于 python中的"成年" if age >= 18 else "未成年"        console.log(ret); */

    经验总结扩展阅读