js学习
<noscript >
noscript 元素用来定义在脚本未被执行时的替代内容(文本)。此标签可被用于可识别 <script> 标签但无法支持其中的脚本的浏览器。
如果浏览器支持脚本,那么它不会显示出 noscript 元素中的文本。
无法识别 <script> 标签的浏览器会把标签的内容显示到页面上。
<noscript>Please enable JavaScript to continue using this application.</noscript>
@cc_on
<script> /*@cc_on window.location.href=window.appUtil.base_path+"/status/upgrade-your-browser.html?referrer="+encodeURIComponent(window.location.href); @*/ </script>
判断是否是ie浏览器
Internet Explorer条件编译语法就是在javascript注释开始标签后面加一个@符号,在js注释结束标签前面加一个@,在/*@和@*/之间的代码就是条件编译代码,
W3C标准浏览器会直接把这些代码当作注释,所有版本的IE包括IE11都能够识别并且执行条件编译代码,
需要注意的是,Internet Explorer 11 标准模式和Windows 8.x起应用商店应用已经移除对条件编译的支持,IE 11兼容模式使用的是IE 7内核,也可以在在“F12开发人员工具中”指定为其他低于11的版本来支持条件编译。
想要让条件编译生效,需要加一条cc_on指令开启条件编译,cc就是conditional compilation的英文缩写,cc_on就是打开条件编译。
指令必须放在条件编译注释中,写成/*@cc_on@*/,否则会导致W3C标准浏览器报错。
object对象
比较2个值是否严格相等
Object.is(NaN, NaN) // true
返回的是所有可枚举属性,不包括原型中的属性,返回一个由属性名组成的数组
Object.keys()
返回的是对象所有的属性 但不会获取原型链上的属性
Object.getOwnPropertyNames()
xx in obj : 判断对象里面有没有这个变量或者方法
let obj = { a:2, b:5, c:6 } console.log('a' in obj); //true
Array数组
获取对象的属性值 为ES6新增的方法,主要来遍历可迭代的对象(包括Array, Map, Set, arguments等)
for-of:遍历数组的属性值
let arr = [1,2,3]; arr.name = 4; for(let i in arr) { console.log(i); // 1,2,3,name } for(let i of arr) { console.log(i); // 1,2,3 }
for-in:遍历数组的属性名
数组本身是一个对象,属性名即下标,所以输出的都是下标
js中&&和||的返回值
&&从左到右执行表达式
直到某个表达式的运行结果返回false,或者可以转化为false,则返回该表达式的运行结果作为整个&&表达式的运行结果;
如果所有表达式的直接结果均为true,则返回最后一个表达式的执行结果作为整个&&表达式的结果
||从左到右执行表达式
直到某个表达式的运行结果返回true,或者可以转化为true,则返回该表达式的运行结果作为整个||表达式的运行结果;
如果所有表达式的直接结果均为false,则返回最后一个表达式的执行结果作为整个||表达式的结果
==和===的区别
1、===:称为等同符,当两边值的类型相同时,直接比较值,若类型不相同,直接返回false;
2、==:称为等值符,当等号两边的类型相同时,直接比较值是否相等,若不相同,则先转化为类型相同的值,再进行比较;
类型转换规则:
1)如果等号两边是boolean、string、number三者中任意两者进行比较时,优先转换为数字进行比较。
2)如果等号两边出现了null或undefined,null和undefined除了和自己相等,就彼此相等
注意:NaN==NaN //返回false,NaN和所有值包括自己都不相等。
Websocket
WebSocket (WS)是HTML5一种新的协议。它实现了浏览器与服务器全双工通信,能更好地节省服务器资源和带宽并达到实时通讯。
WebSocket建立在TCP之上,同HTTP一样通过TCP来传输数据,但是它和HTTP最大不同是:
WebSocket是一种双向通信协议,在建立连接后,WebSocket服务器和Browser/Client Agent都能主动的向对方发送或接收数据,就像Socket一样;
WebSocket需要类似TCP的客户端和服务器端通过握手连接,连接成功后才能相互通信。
WSS(Web Socket Secure)是WebSocket的加密版本
http情况下用ws,https情况下必须要使用wss
https相当于使用http+ssl认证,使用https时websocket访问(比如建立链接时)必须要使用wss