知识点记录
1. 函数构造器
new Function(arg1,arg2, ... argN,functionBody);
方法主体是字符串,定义在最后一个参数。这种通过使用文本访问javascript解析引擎的方式,性能低下。相似使用如eval,setTimeout,setInterval。
2. with语句,强制变量寻找优先在指定的对象作用域。当未找到时会向上级作用域链搜寻。在ES5严格模式下此语句已禁止
3. location.replace()方法,替换上次浏览器历史记录,不产生新的记录。
在重定向时比较有意义
4. 尤其是移动端,可以考虑在第一次访问页面时,只加载主要内容。然后引导用户做更多的加载资源操作,这样体验可能较好。
- 如果待加载的页面不存在于缓存中,会触发 onload ,再触发 pageShow
- 如果待加载的页面存在于缓存中,不触发 onload,只触发 pageShow
pageShow 事件对象 event 中有一个属性值,叫做 persisted,如果这个值为 true,则为缓存数据,false,则为第一次加载
5. 无障碍访问
a. 焦点聚焦在A区块,当ajax重新渲染A区块时,保持A区块的焦点;
b. 从导航栏跳转到某个锚点位置时,焦点跟随指向锚点区域的第一个元素;
c. 可操作元素不可聚焦,考虑将元素加个tabIndex属性
6. ['1', '2', '3'].map(parseInt); // While one could expect [1, 2, 3] // The actual result is [1, NaN, NaN]
遍历函数接受三个参数(currentValue,index,array),所以调用时应该是这样的形式:
parseInt("1", 0, theArray),parseInt("2", 1, theArray)
参考:http://www.wirfs-brock.com/allen/posts/166
7. 表达式2 < 5 < 2 结果为true。
形式合法,连续比较,是前一次的布尔结果值转换后再与后面的值比较。
8. Number有安全数值。安全表示的数值范围为-(2-53 -1) -- 253 - 1
9. [10] == 10 //true
objec转换为数值时,会经过三个步骤
a.调用valueOf() 。如果结果是原始值(不是一个对象),则将其转换为一个数字
b.否则,调用toString()方法。如果结果是原始值,则将其转换为一个数字
c.否则,抛出一个类型错误
[10].valueOf(); //[10]
[10].toString(); //'10'
Number('10'); //10
** parseInt函数调用时,首先将第一个参数转换成字符串,然后再通过函数调用转换成数值
10. input:-webkit-autofill, textarea:-webkit-autofill, select:-webkit-autofill {}
定义了输入框自动填充后的样式,一般为记住密码时有效
浙公网安备 33010602011771号