目录
一、in
数组中为 索引 in 数组,而在对象中为key in 对象
console.log(1 in [1]);//false 该数组只有一个元素 索引0 再数组中
console.log('name' in { name: '' });//true 该对象中存在name属性
二、isNaN() 函数用来确定一个值是否为NaN
如果传入的值为引用数据类型会使用toString转为字符串,如果为简单数据类型,会使用Number()转换为数字
console.log(1 / 0); //Infinity
console.log(isNaN(1 / 0)); //false
console.log(isNaN(undefined)); //=>isNaN(Number(undefined))=>isNaN(NaN) 返回true
三、Date.now()
Date.now()自 1970 年 1 月 1 日 00:00:00 UTC 以来的毫秒数
console.log(typeof Date.now())//返回 number
四、变量提升
在es6中,class类不存在变量提升,这意味着不能在声明前使用它
在下列函数中test作用域中存在a,但是因为class不能变量提示,所以位置A会报错,而位置B则可以打印出class a{}
答案:报错,class a{}
五、代码回收
1.全局变量不会被回收
2.局部变量会被回收,函数一旦运行完成,函数内部的东西就会被销毁
3.变量如果被另一个作用域引用就不会被回收(闭包)
所以i重复声明,只是重新赋值,全局变量i不会被回收,还有全局变量add不会被回收,函数内的i被另一个函数引用不会被回收,所以存在3个变量没有被回收
六、eval方法
eval()将传入的字符串当作js代码执行,并返回一个结果
let x = 2;
console.log(eval('x+2')); //4
七、try...catch...
如果try语句后面有finally,try中的return不会跳出函数,因为一定要进入finally语句
try {
//在这执行可能出现异常的语句
} catch {
//如果抛出异常就会执行catch内的语句
} finally {
//不管是否抛出异常都会执行
}
八、parseInt
parseInt() 函数可解析一个字符串,并返回一个整数。parseInt(string, radix) string为要解析的字符串,radix为表示要解析的数字的基数。该值介于 2 ~ 36 之间。
1.如果字符串的第一个字符不能被转换为数字,那么 parseInt() 会返回 NaN。
2. 只有字符串中的第一个数字会被返回。
console.log(parseInt('1a')); //1
console.log(parseInt('1a') === 1); //true
九、静态方法和实例方法
class类中静态方法只能由类访问,实例方法只能用实例对象访问
class A {
static run() {
console.log('run');
}
siwm() {
console.log('swim');
}
}
const a = new A();
A.run(); //静态方法只能由类访问
a.siwm(); //实例方法只能由实例对象访问
十、valueOf
valueOf()
函数返回指定对象的原始值。
console.log((5).valueOf()); //数字型 5
console.log([1, 2, 3].valueOf()); //字符串 [1,2,3]
console.log('123'.valueOf()); //数组 123
console.log(Boolean(0).valueOf()); //false