1.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.运算符优先级
- 算数操作符->比较操作符->布尔(逻辑)操作符->‘=’赋值符号
- 逻辑&& > ||
- 4 >=6 false
- true && 1 (逻辑与z规则:第一个操作数为真,则返回第二个操作数)=》false || 1 || false
- false || 1 结果:1 (或规则:第一个操作数为假时,返回第二个操作数)
- 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');
console.log(flag1);
console.log(flag2);
var a = 4399 < 0 || typeof(4399 + '');
console.log(a);
3. NaN
console.log(123+null)
console.log(123/0)
console.log(123 + '1')
console.log(123 + undefined)
- ①为!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);
字符串隐式转换成数字
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; }
};
7.forEach
- forEach方法在数组元素为空时会跳过执行回调函数
- 相当于此选项回调函数并未执行,所以还是输出0。
let i = 0;
new Array(10).forEach(() => {
i++;
});
- 在forEach中使用 return false 或者 break无法跳出整个循环,并且使用break会直接报错
- if(count % 3 == 0){ return; }满足这一条就执行下一个循环
- 直到循环完毕 所以结果为【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;
}
a(i);
9. ++ – 前后位置不同的运算顺序
- 前置 返回它递减之后的值。
- 后置 返回它递减之前的值。
10.Math
- round() 返回一个数字四舍五入后最接近的整数