7.运算题

1.eval

  • eval会返回最后一个表达式的求值结果
        eval(`{
            1+3;
            a=2;
            x:break x;
            3;
            4+6;
            ;
        }`)
        console.log(eval(`{
            1+3;
            a=2;
            x:break x;
            3;
            4+6;
            ;
        }`))

2.运算符优先级

  • 算数操作符->比较操作符->布尔(逻辑)操作符->‘=’赋值符号
  • 逻辑&& > ||
  1. 4 >=6 false
  2. true && 1 (逻辑与z规则:第一个操作数为真,则返回第二个操作数)=》false || 1 || false
  3. false || 1 结果:1 (或规则:第一个操作数为假时,返回第二个操作数)
  4. 1 || false 结果:1
        var a = 4 >=6 || true && 1 || false
        console.log(a)
let flag1 = null || undefined;
let flag2 = null && undefined;
if (flag1 === true) console.log('flag1');
if (flag2 === false) console.log('flag2');
// 以上都不输出 原因在下 输出的是个结果不是boolean值
console.log(flag1); // undefined
console.log(flag2); // null
var a = 4399 < 0 || typeof(4399 + '');
console.log(a); // string

3. NaN

  • 只有0/0为NaN 其余/0都为Infinity
        console.log(123+null) //123
        console.log(123/0) //Infinity
        console.log(123 + '1') // 1231
        console.log(123 + undefined) //NaN 
  • ①为!newArr.includes(arr[i])
    // ES7中新增的数组实例方法,includes()方法认为NaN等于自身
    [1, 2, NaN].includes(NaN) // true
  • NaN == NaN // false
    NaN === NaN // false
  • // indexOf方法无法识别数组的NaN成员
    [NaN].indexOf(NaN) // -1
  • // 向 Set 数据结构中加入值时认为NaN等于自身
    let set = new Set();
    set.add(NaN);
    set.add(NaN);
    console.log(set); // Set {NaN}
  • // **Object.is()**方法认为NaN等于NaN
    Object.is(NaN, NaN) // true
    +0 === -0 //true
    Object.is(+0, -0) // false
var arr = [1,2,NaN,1,4,2,NaN]
var newArr = [];
for(var i = 0 ;i<arr.length;i++){
  if(){
    newArr.push(arr[i]);
  }
}
console.log(newArr);

4.+,-,字符串

  • +有加法 有字符串拼接 +""即可将其转换成String字符串类型
  • -只有减法 为任意的数据类型 -0 即可将其转换成Number数值类型
  • “103” - “1” = 102
var foo = "10"+3-"1"; 
console.log(foo); //102

字符串隐式转换成数字

  • 除了+其余都转换成数字

5.取整数

  • praseInt(a)
  • Math.floor(a) 向下取整
  • Math.ceil(a) 向上取整

6.valueOf()

  • { valueOf() { return 9; } } 是一个匿名对象
  • 对象默认是有valueOf方法的
  • 对象与数字相加时,对象调用自身的valueOf方法转换为数字
  • 输出 i == 1 + 9 == 10;
let i =1 + {
  valueOf() { return 9; }
};
// i = 10

7.forEach

  • forEach方法在数组元素为空时会跳过执行回调函数
  • 相当于此选项回调函数并未执行,所以还是输出0。
let i = 0;
new Array(10).forEach(() => {
  i++;
});
// i = 0
  1. 在forEach中使用 return false 或者 break无法跳出整个循环,并且使用break会直接报错
  2. if(count % 3 == 0){ return; }满足这一条就执行下一个循环
  3. 直到循环完毕 所以结果为【2,1,5,9】
var arr = [2,1,3,5,9];
var count = 0;
arr.forEach((val1,val2)=>{
        count++;
        if(count % 3 == 0){
            return;
        }
        console.log(val1);
})

8.形参

  • 执行函数a(i)
  • 函数里的i是形参,为局部变量,不影响全局
  • 当函数里有return时
let i = 5;
function a(i) {
  i *= 2;
  // return i
}
a(i);
// i = 5

9. ++ – 前后位置不同的运算顺序

  • 前置 返回它递减之后的值。
  • 后置 返回它递减之前的值。

10.Math

  1. round() 返回一个数字四舍五入后最接近的整数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值