左查询&右查询

来源:互联网 发布:c语言数组和指针的区别 编辑:程序博客网 时间:2024/05/11 13:18

左查询和右查询

怎么区分函数声明和函数表达式:

函数声明:以function开头的具有函数的代码片段
函数表达式:不以function开头的具有函数的代码片段
- 伪数组:具有length属性的对象都叫做伪数组
- 作用域应该是“集合”

右查询:对等号非左边变量的查询

  • 在整个作用域链中,如果没有找到变量的声明,直接抛ReferenceError错误。

左查询:对等号左边变量的查询

  • 在整条作用域链中,如果没有找到变量的声明,js引擎会自动在全局声明一个同名变量

殊的右查询(typeof 的安全机制)

  • 通常情况下,没有定义的变量a,如果输出的话会报错;但是 typeof a 就不会报错而是返回undefined。
    console.log(typeof a) 返回的是 undefined
  • 严格模式:
    左查询在严格模式下(“use strict”)依旧没有用。
  • 在javascript中只有引用值传递
  • 基本数据类型:总是通过值复制的方式来赋值/传递
  • 引用数据类型:总是通过引用复制来完成赋值/传递
  • 注意引用指向的是值而非变量,所以一个引用无法更改另一个引用的指向,但是可以更改不同变量共同指向的值!
  • 包装类的基本数据类型值是不可以修改的!
  • .valueOf() 表示将 拆包,就是将包装类转成基本数据类型。如果要和 == 作比较的时候,它拆完包的时候,会再调用底层的toString()方法,将其转换为字符串类型。
  • 变量的提升不会搭理if条件的暗示
console.log(a);  //undefined    console.log(a);  //undefined    if(true){        var a=10;   }else{        var b=20;   }  
  • 最佳实践:在块内部不要去定义函数

装箱

var a=3;/*这步是浏览器底层做的操作,将基本的数据类型转化为包装类,可以调用方法。*/var a=new Number();  (浏览器帮我们自动做了)a.toString();   //返回的类型为string类型
原创粉丝点击