1.为什么某个表达式在控制台的输出结果为undefined?
控制台在执行完我们输入的表达式之后,总是要输出该表达式的运行结果,但是有一些表达式(例如:var a = 1)是没有任何返回值的,在这种情况下,控制台就会隐式的打印一个undefined。
2. a++和++a的区别:
后置的++操作会先返回该值,然后再增1
let a=123; let b=a++; b //123 a //124前置的++会先将该值增1,然后再返回
let a=123; let b=++a; a //124 b //1243.Infinity相关:
任何正数除以0的结果都为 Infinity正负 Infinity相加我们也不会得到0,而是得到一个NaNInfinity 与其他任何操作数执行任何算术运算结果也都为 Infinity4.NaN
NaN依然属于数字类型,只不过是一种特殊的数字罢了。
NaN不等于任何东西,包括它自己。
typeof NaN //"number"NaN是有传染性的,只要我们的算术运算中存在一个NaN,整个运算就会失败。
5. 字符串、数字转换的简易方法:(利用了js的隐式转换)
//数字字符串转换为数字 let s="100"; s=s*1; //其他类型转换为字符串 let n=1; n=n+'';常用特殊字符串:
\ 转义符\n 换行符\r 回车符6.惰性求值:
如果在一个连续的逻辑操作中,操作结果在最后一个操作完成之前就已经明确了的话,那么该操作往往就不必再继续执行了,因为这已经不会对最终结果产生任何影响了。
true || false || true || false || true ;上述例子中,只要其中任何一个操作数为true,该表达式的结果就为true。因而当第一个操作数被求值之后,无论后面的值是什么,结果都已经确定了。javascript引擎在不影响最终结果的情况下省略了一些不必要的求值操作。
7.delete操作符:
使用delete操作符删除数组中的元素,删除值将使用undefined代替,数组长度不变。
let arr = [ 1 , 2 ,3 ]; delete arr[1]; arr //[ 1 , 'undefined' , 3 ]