JavaScript常见小问题
js类型转换
- 任何对象转为布尔值都会得到true(切记!在 JS 中,只有 0,-0,NaN,"",null,undefined 这六个值转布尔值时,结果为 false)。
- a = Boolean(0),而不是 a = new Boolean(0)。这两个有很大区别,用 new 调用构造函数会新建一个布尔对象,此处没有加 new,进行的是显示类型转换,正如上述第一条所说,0 转换布尔,结果为 false,所以此时 a 的值就是 false。如果加了 new,那么 a 就是一个 Boolean 类型的对象,执行 if(a) 时,对象转布尔,始终是 true,所以结果会与不加 new 的时候相反。
页面的性能指标详解
- 白屏时间(first Paint Time)——用户从打开页面开始到页面开始有东西呈现为止。
- 首屏时间——用户浏览器首屏内所有内容都呈现出来所花费的时间。
- 用户可操作时间(dom Interactive)——用户可以进行正常的点击、输入等操作,默认可以统计domready时间,因为通常会在这时候绑定事件操作
- 总下载时间——页面所有资源都加载完成并呈现出来所花的时间,即页面 onload 的时间
与浏览列表有关的对象(指的是浏览器对象)
- History 对象包含用户(在浏览器窗口中)访问过的 URL
- Location 对象包含有关当前 URL 的信息
- Window 对象表示浏览器中打开的窗口
- Navigator 对象包含有关浏览器的信息
运算符||和&&
1、只要“||”前面为false,无论“||”后面是true还是false,结果都返回“||”后面的值。
2、只要“||”前面为true,无论“||”后面是true还是false,结果都返回“||”前面的值。
3、只要“&&”前面是false,无论“&&”后面是true还是false,结果都将返“&&”前面的值;
4、只要“&&”前面是true,无论“&&”后面是true还是false,结果都将返“&&”后面的值;
代码回收规则如下:
1.全局变量不会被回收。
2.局部变量会被回收,也就是函数一旦运行完以后,函数内部的东西都会被销毁。
3.只要被另外一个作用域所引用就不会被回收。