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

 

posted @ 2022-01-11 17:57  litiyi  阅读(33)  评论(0编辑  收藏  举报