美文网首页
JS基础知识点

JS基础知识点

作者: yzmt | 来源:发表于2020-09-14 11:36 被阅读0次

    逻辑运算符

    undefined, null, NaN, "", 0, false这六个值转成布尔值均为false

    &&(与)

    && 从第一个表达式依次往后看, 如果遇到的表达式转成布尔值为false, 则暂停, 将该表达式的值返回; 如果从头到尾转成布尔值均为true, 则将最后一个表达式的值返回

    let a = 1 && 2
    console.log(a) // 2
    
    let a = 1 && ""
    console.log(a) // ""
    
    let a = 0 && ""
    console.log(a) // 0
    
    let a = 2 && "" && 4
    console.log(a) // ""
    ....
    
    ||(或)

    ||从第一个表达式依次往后看, 如果遇到的表达式转成布尔值为true, 则暂停, 将该表达式的值返回; 如果从头到尾转成布尔值均为false, 则将最后一个表达式的值返回

    let a = 1 || 2
    console.log(a) // 1
    
    let a = 0 || 1
    console.log(a) // 1
    
    let a = 0 || ""
    console.log(a) // ""
    
    let a = 1 || "" || null
    console.log(a) // 1
    
    let a = 0 || 2 || null
    console.log(a) // 2
    
    !(非)

    !将表达式先转换成布尔值再取反

    函数预编译四部曲

    • 创建 AO 对象 Activation Object(执行期上下文,作用是理解的作用域,函数产生
      的执行空间库)
    • 找形参和变量声明,将变量和形参名作为 AO 属性名,值为 undefined
    相当于 AO{
     a : undefined,
     b : undefined
    }
    
    • 将实参值和形参统一(把实参值传到形参里)
    • 在函数体里面找函数声明,值赋予函数体
      (先看自己的 AO,再看全局的 GO

    作用域

    function a (){
    function b (){
     var bb = 234;
     aa = 0;
    }
    var aa = 123;
    b();
    console.log(aa)
    }
    var glob = 100;
    a();
    
    image.png
    image.png
    image.png
    image.png

    闭包的作用

    • 实现公有变量
    • 可以做缓存(存储结构)
    • 可以实现封装, 属性私有化
    • 模块化开发, 防止污染全局变量

    相关文章

      网友评论

          本文标题:JS基础知识点

          本文链接:https://www.haomeiwen.com/subject/irwcphtx.html