左查询&右查询

本文深入探讨了JavaScript中的左查询与右查询的区别,并详细解释了函数声明与函数表达式的概念。此外,还介绍了基本数据类型与引用数据类型的传递方式及包装类的基本数据类型值的不可修改性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

左查询和右查询

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

函数声明:以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类型
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值