【JavaScript】js 中一些需要注意的问题
1. 关于js中逻辑运算符:|| 和 &&
- 在js逻辑运算中,0、""、null、false、undefined、NaN都会判为false,其他都为true
- 对两个非,即!!,其作用是可以把一个其他类型的变量转换为boolean类型值,比如 typeof 5输出“number”,而typeof (!!5)输出“boolean”
- 短路原则:如&&中第一个表达式为假就不会去处理第二个表达式,而||正好相反。
-
&& 优先级高于 ||;
- 举例:
var a = "" || null || 3 || 4; //3 var b = 4 && 5 && null && "0"; //null
- 一些妙用
- var attr = attr || “”; 这个运算经常用来判断一个变量是否已定义,如果没有定义就给他一个初始值,这在给函数的参数定义一个默认值的时候比较有用
注意:如果实参需要是0、""、null、false、undefined、NaN的时候也会当false来处理。 - a >= 5 && alert("你好"); 可以表示:if(a>=5){ alert("你好");}
- var attr = attr || “”; 这个运算经常用来判断一个变量是否已定义,如果没有定义就给他一个初始值,这在给函数的参数定义一个默认值的时候比较有用
参考:js 与或运算符 || && 妙用 js中的|| 与 &&
2. sort()方法:
- sort()方法用于对数组的元素进行排序。
-
arrayObject.sort(sortby); //参数sortby可选。规定排序顺序。必须是函数。
返回对数组的引用,数组在原数组上进行排序,不生成副本
-
如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。
-
如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:
- 若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
- 若 a 等于 b,则返回 0。
- 若 a 大于 b,则返回一个大于 0 的值。
3. null和object的关系:
[typeof null, null instanceof Object]
的输出结果是
正确答案:object, false
解析: null
为一个空的对象,这个对象存在但是里面一点东西都没有,相当于有堆空间但是里面没有属性。而undefined
可以理解为连堆空间都没有(至少表现出来是这样的不是吗?) null instanceof Object
为false
是因为null
连属性都没有,更没有检测原型链的_proto_
和prototype
了。
更多博文:
a || b :如果执行a后返回true,则整个表达式返回a的值,b不执行;如果执行a后返回false,则执行b并返回b的值;