• js常用随手记


    1. 判断是否是空对象

    let myObject={}
    Object.keys(myObject).length // 0

     2. void 0 代替 undefined

    undefined 不是保留字,在局部作用域下能被重写,因此在 val === undefined 是有风险的

    并且代替后有以下优点:

    • void 0 占用字节更少
    • void 0 更安全靠谱

    至于 void 0 相比 undefined 效率高低问题,简单做了多次测试,取平均值来看,void 0 要比 undefined 快一点点,也算是一个优势。

    console.time();for(let i=0;i<100000;i++){undefined};console.timeEnd();
    
    console.time();for(let i=0;i<100000;i++){void 0};console.timeEnd();

    一个应用实例场景,对比 vue dev 和 vue prod  两个版本,也会发现dev版本内的 undefined 被替换为了 void 0(当然dev内的 'undefined' 没被替换)。

    ES规范中我们能看到,void 0返回的仍旧是 undefined,这里的 undefined 为全局没被污染的(window.undefined),因此不会被局部的 undefined 定义影响。

    参考:ES规范

    stackoverflow-what does void 0 mean

    3. textContent 与 innerText 区别

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
    </head>
    <body>
        <span id="hello">Hello <span style="display: none;">World</span></span>
    <script>
        let domHello = document.querySelector('#hello');
    
        console.log('textContent', domHello.textContent); // Hello World
        console.log('innerText', domHello.innerText); // Hello 
    </script>
    </body>
    </html>

    概述:

    •  innerText 不是w3标准,但目前被各大浏览器厂商实现,有很好的IE 兼容性(IE6-11)
    • textContent 是w3标准,除了 IE6-8外,其他浏览器支持良好
    • 二者表现有挺大区别,例如上面例子

    参考:textContent 与 innerText 区别

    textContent vs innerText

  • 相关阅读:
    TCP之“3次握手,4次挥手”问题——实例分析
    TCP之“3次握手,4次挥手”问题
    IO
    select用法&原理详解(源码剖析)(转)
    select(),fd_set(),fd_isset()
    AF_INET与套接字SOCKET
    Socket 编程简介
    Spring 事务控制
    Spring-Profile详解
    Spring的常用使用场景
  • 原文地址:https://www.cnblogs.com/newbob/p/10112720.html
Copyright © 2020-2023  润新知