JS中的隐式类型转换
数字运输符
1234567var a = 123, b = '4';var c = a + b;console.log(c); // '1234'typeof c; // stringtypeof (a + '') // stringtypeof (+b) // numberconsole.log(a - b) // 119if/while
语句中的判断12345var obj = {name: 'snk'};// obj被转换成了Boolean值if (obj) {//do sth;}相等操作符==
12var a = 123, b = '123';console.log(a == b); // true 这里相等操作符做了隐式类型转换,建议永远使用全等操作符===
JS中的类型识别方法
- typeof: 可以识别标准类型(null由于历史原因显示为object);不能识别具体对象类型(function除外)
- instanceof: 可以识别内置对象类型和自定义对象类型;不能识别标准对象类型
- Object.prototype.toString: 可以识别标志类型和内置对象类型;不能识别自定义对象类型
- constructor: 可以识别标志类型(null和undefined除外);可以识别内置对象和自定义对象 >>在线demo
函数声明和函数表达式的区别
|
|
假值
false
null
undefined
空字符串
数字0
NaN
- 剩余的都是真值
++i
和i++
的区别
|
|
二分法
|
|
一个页面从输入 URL 到页面加载显示完成,这个过程中都发生了什么?
- 浏览器会开启一个线程来处理这个请求,对 URL 分析判断如果是 http 协议就按照 Web 方式来处理;
- 调用浏览器内核中的对应方法,比如 WebView 中的 loadUrl 方法;
- 通过DNS解析获取网址的IP地址,设置 UA 等信息发出第二个GET请求;
- 进行HTTP协议会话,客户端发送报头(请求报头);
- 进入到web服务器上的 Web Server,如 Apache、Tomcat、Node.JS 等服务器;
- 进入部署好的后端应用,如 PHP、Java、JavaScript、Python 等,找到对应的请求处理;
- 处理结束回馈报头,此处如果浏览器访问过,缓存上有对应资源,会与服务器最后修改时间对比,一致则返回304;
- 浏览器开始下载html文档(响应报头,状态码200),同时使用缓存;
- 文档树建立,根据标记请求所需指定MIME类型的文件(比如css、js),同时设置了cookie;
- 页面开始渲染DOM,JS根据DOM API操作DOM,执行事件绑定等,页面显示完成