009 JavaScript运算符

151 阅读2分钟

运算符

  • 加号 + :当有字符串参与 表示字符串拼接
console.log("3"+"4"); // "34" 
console.log(typeof ("3"+"4")); // string 
console.log(10+"5");// "10"+"5"---> "105"
  • 减号 - :字符串转换成数字,若遇到字母加数字,则类型为NaN
console.log("3" - "4"); //3-4  -1
console.log("3" * "4");
console.log(typeof ("20" + 20 - 10)); // "2020"-10 2010
console.log("6" - false); //6 false转成数字0 "6"-0 true转换成1
console.log("6" - "5adasd");// NaN not a number
console.log(typeof NaN); // number
  • i++与++i 的区别

    • 相同点:最终x的值都会在原来基础上加1
    • 不同点:
    • i++先拿原始值进行运算,运算完后本身再累加1
      • ++i先本身累加1,拿累加后的结果进行运算
    var y = 10;
    var k;
    k = y++; // y++整体的值是y之前的值
    k = ++y;// ++y整体的值y加1后的值 k=11
    console.log(y++) //10  输出即是y原来的值
    console.log(y); // 11
    console.log(k); // 11
    

关系运算符

// =赋值号  var x = 10;
// == 不严格等于 只要内容相同即可 类型不要求 !=是对==否定
// === 严格等于  内容和类型都必须一样 !==是对===否定
console.log(5 < 6); // true 
console.log(6 <= 6); //true
console.log("10" <= "6");//true  都是字符串类型,先把第一个字符相互比较,1<6,所以true
console.log("abc" <= "ahf");//true  字符串先从第一个字符开始比较,a=a,下一个b<h,正确则为true
console.log("22a" <= 6); // false  有数字加字母,会变成NaN,永远都是false
console.log("22a" >= 6); // false  同上
console.log("12" <= 6); //12<=6 false   一边是字符串,一边是数字,则转换成数字比较,12<=6,true
console.log("12" >= 6); //12>=6 true 同上
console.log(10 == "10"); //true ==不考虑数据类型,只比较内容
console.log(10 === "10"); // false 严格等于,内容和类型需一致
console.log(10 != "10"); // false  ==的否定
console.log(10 !== "10"); // true ===的否定

短路问题

var i = 10;
console.log(4 < 5 || i++); // true 若第一个为true则不用继续判断
console.log(4 > 5 && i++); // false 需要两个都判断
console.log(i); // 10

var i = 9;
console.log(0 || i++);//9 执行||运算符 从左到右执行 遇到0认为是假 直接返回第二个表达式的值,i++为9  
console.log(i);   // 10

console.log(5 || i++);//5  若不是0,则输出
console.log(i);// 10


console.log(0 && ++i);//0 0为假,不用往下计算
console.log(i); //   10


console.log(6 && ++i);//11   6为真,输出结果由下一个决定;++i=11
console.log(i); //  11

条件表达式:三元运算符

console.log( null?56:90 );// 非0数字转化成true 0转成false 非空字符串转成true 空字符串转成false
var num = 91;
console.log( num%2==0 ? "偶数" : "奇数" );