1、js定义的变量为弱变量,“+”运算时使用number()函数先进行转换,通过isNaN()判断其是否为一个数值,后进行相关运算。如果字符型与数字型进行“+”运算,则“+”实质作为一个字符连接符,而不是运算符。
2、arr.forEach(a,b,c)
这个函数用于数组的遍历,其中参数abc的意义分别是:a代表了arr[0]至arr[arr.length-1]——即数组每一项;b代表了0至arr.length-1——即索引值;c代表了arr——对象本身。
3、isNaN()
NaN(Not a Number)是一个特殊的数值。该数值用来表示已个本来要返回数值的操作数未返回数字的情况(这样不会抛出错了)。
isNaN()函数。该函数接受任何类型的参数,而函数会帮我们确定这个参数是否“不是数值”。isNaN()在接受一个之后会尝试转换为数值。如字符串“10”或者Boolean值。而任何不能被转换为数值的值都会导致这个函数返回true。
参数值为NaN或者字符串、对象、undefined等非数字值返回true。
isNaN()判断了不能用number()转换成数字的类型。如isNaN(“123”)—false 则number(“123”)—123。
4、
(function({
var a=b=5;})();
console.log(b);
console.log(a);
var a=b=5相当于var a=b;b=5;(a为定义的局部变量,而b没有var,定义为全局变量。严格模式下报错。)该函数运行后,局部变量自动销毁,所以console.log(a)会报错:a is not defined(undefine是声明了的没有赋值的元素);而b是全局变量,输出为5。
5、块级元素的宽高由内容撑开。
6、console.log(([])?true:false);//true
([])相当于Boolenan([])返回true;Boolean只有几个参数返回false:Boolean(null);Boolean(undefined);Boolean(0);Boolean(NaN);Boolean(’ ');其他皆为true。
console.log(([]==false?true:false));//true
布尔型与其他类型比较,布尔型转换成数值型。Number([]);//0 Number({});//NaN
console.log(({}==false)?ture:false);//false
7、
typeof 1;//'number'
typeof(1);//'number'
typeof();//SyntaxError
void 0;//undefined
void(0);//undefined
void();//SyntaxError
8、匿名函数就是没有名字的函数。
var ss=function(x,y){
alert(x+y);
};
ss(1,2);
这就是创建了一个匿名函数,并将匿名函数赋值给了变量ss,用ss来进行函数的调用,调用方式就是在ss后面加一对括号,如ss(1,2);就是匿名函数的一种调用。
另一种调用就是自调用方式。
(function(){
})();
9、逻辑运算表达中,非布尔值会转换成布尔值。算上false有6个值会转换为false:false,“”,0,NaN,null,undefined。