JavaScript(基础知识注意点3)
1 数组
请注意,直接给Array的length赋一个新的值会导致Array大小的变化;
请注意,如果通过索引赋值时,索引超过了范围,同样会引起Array大小的变化;
concat()方法把当前的Array和另一个Array连接起来,并返回一个新的Array
2 判断
请注意,if...else...语句的执行特点是二选一,在多个if...else...语句中,如果某个条件成立,则后续就不再继续判断了。
3 循环遍历
请注意,for ... in对Array的循环得到的是String而不是Number。(他只遍历key值。)
注意,forEach()方法是ES5.1标准引入的,你需要测试浏览器是否支持。
4 标准对象
不要使用new Number()、new Boolean()、new String()创建包装对象;
用parseInt()或parseFloat()来转换任意类型到number;
用String()来转换任意类型到string,或者直接调用某个对象的toString()方法;
通常不必把任意类型转换为boolean再判断,因为可以直接写if (myVar) {...};
typeof操作符可以判断出number、boolean、string、function和undefined;
判断Array要使用Array.isArray(arr);
判断null请使用myVar === null;
判断某个全局变量是否存在用typeof window.myVar === 'undefined';
函数内部判断某个变量是否存在用typeof myVar === 'undefined'。
5 时间
JavaScript的月份范围用整数表示是0~11,0表示一月,1表示二月
6 exec和test
RegExp.test返回的是是否匹配
RegExp.exec返回的是正则表达式匹配的到的结果和子串
7 什么是正则表达式的贪婪与非贪婪匹配
String str="abcaxc";
Patter p="abc";
贪婪匹配:正则表达式一般趋向于最大长度匹配,也就是所谓的贪婪匹配。如上面使用模式p匹配字符串str,结果就是匹配到:abcaxc(abc)。
非贪婪匹配:就是匹配到结果就好,就少的匹配字符。如上面使用模式p匹配字符串str,结果就是匹配到:abc(ab*c)。
8 原型继承
// 空函数F:
function F() {
}
// 把F的原型指向Student.prototype:
F.prototype = Student.prototype;
// 把PrimaryStudent的原型指向一个新的F对象,F对象的原型正好指向Student.prototype:
PrimaryStudent.prototype = new F();
// 把PrimaryStudent原型的构造函数修复为PrimaryStudent:
PrimaryStudent.prototype.constructor = PrimaryStudent;
9 window对象
请注意,navigator的信息可以很容易地被用户修改,所以JavaScript读取的值不一定是正确的。