JavaScript是前端必备,而这其中的精髓也太多太多,最近在温习的时候发现有些东西比较容易忽略,这里记录一下,一方面是希望自己在平时应用的时候能够得心应手,另一方面也希望能给别人带来一点点的收获。
一、JavaScript的==和===,即相等运算符和等同运算符。
相等运算符,如果操作数有相同的类型,则判断其等同性,如果两个操作数的值相等,则返回true(相等),否则返回false(不相等);
如果类型不同,则按照这样的情况来判断:
null和undefined相等;数字与字符串字符比较,字符串转化为数字再比较;其中一个为true转化为1再做比较;如果一个值是对象,另一个是数字或者字符串,则将对象转化为原始值(通过toString()或者valueOf()方法),其他返回false。
等同运算符,如果操作数类型不一样,直接返回false,类型相同,如下判断:
1、都是数字,若值相同,则两者等同但是NAN除外,因为NAN与本身也不等,否则不相同;
2、都是字符串的情况:值不等则不等同,否则等同;
3、都是布尔值,均为true/false则等同否则不等同;
4、如果两个操作数引用同一对象(数组或函数)则等同,否则不等;
5、均为null/undefined则等同。
二、函数作用域
作用域在所有语言中都有体现,只是在Javascript脚本里有其特殊性-->Javascript中的作用域为函数体内有效,而无块儿作用域。在Java或者C#中,我们可以写出下面的循环:
public void method(string obj1,string obj2){ for(int i=0;i<obj1.length;i++){ //do something } //此时的i为未定义 for(int i=0;i<obj2.length;i++){ //do another thing } }