js运算中的几个注意点

1.除了字符串参与的加法外,非Number类型的值进行运算时,会将这些值转换为Number然后再运算

var res = true + 100;
console.log(res); // =101
var res1 = true + false;
console.log(res1);//=1
var res2 = null + 10;
console.log(res2);//=10
// 字符串做减法也会转换为Number
var res1 = 100 - '123';
console.log(res1);//=-23

2. 任何值和NaN做运算都得NaN

3. 任何的值和字符串做加法运算,都会先转换为字符串,然后再和字符串做拼串的操作

4. 除0结果是无限大Infinity

<script>
    var res = 100 / 0;
    console.log(res);//Infinity
</script>

 5. *=运算符运算顺序

<script>
    var a = 100;
    a *= 100 + 30; // a = a * (100 + 30)
    console.log(a);//=13000
</script>

6. 非数值与数值进行比较时,会将其转换为数字然后在比较

    console.log(1 > false); // true
    console.log(1 >= true); // true
    console.log(1 >= 'it10'); // true
    console.log(1 > null); // true

7. 如果符号两侧的值都是字符串时,不会将其转换为数字进行比较, 而会分别比较字符串中字符的Unicode编码

8. null、undefined 、NaN比较

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

var num = NaN;
console.log(isNaN(num)); // true
console.log(null == undefined); // true
console.log(null === undefined); // false

9. 逻辑短路

  &&:第一个为假,第二个将不会继续运算

  ||:第一个为真,第二个将不会继续运算

10. 逻辑运算返回值

//对于非Boolean类型的数值, 逻辑与会自动将其转换为Boolean类型来判断
//逻辑与运算
// 如果条件A成立, 不管条件B成不成立都返回条件B数值本身
var result = 123 && 'abc';
console.log(result);//='abc'
var result = 123 && 0;
console.log(result);//=0
//如果条件A不成立, 则返回条件A的数值本身
var result = null && 0;
console.log(result);//=null
//逻辑或运算
var result = 123 || 'abc';
console.log(result);//=123
var result = null || 0;
console.log(result);//=0

11. 对一个值进行两次取反,它不会变化

12. js括号里有多个逗号分隔的表达式会怎么运算和取值?

     依次从左至右运算,取值为最后一个表达式的值

<script>
var num1, num2, num3, num4;
var result = (num1 = 2 + 3, num2 = 3 * 5, num3 = 4 /7, num4 = 3 + 5);
console.log(result); //result=8

var a, b;
b = (a=3, --a, a * 5);
console.log(b);//b=10
</script>

猜你喜欢

转载自www.cnblogs.com/chuanzi/p/9076320.html