那些我错过的题

本文围绕 JavaScript 展开,介绍了强制类型转换、全局变量、++ 操作、call 和 bind 方法、作用域、引用值赋值、原型链、构造函数返回值、预编译、DOM 操作等知识点,还提及了一些易错点和输出结果,帮助理解 JavaScript 基础。

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

在这里插入图片描述

if( )里强制类型转换成布尔类型,bar变成了未定义。

在这里插入图片描述

未声明就赋值是全局变量,做题认真分析AO和GO。

在这里插入图片描述

++只能对变量,原始值不能++

在这里插入图片描述

B
call 和 this 的作用在函数执行时改变this的指向(最完整的说法)
bind 详细见mdn

在这里插入图片描述

作用域是静态的。函数执行的上下文由函数定义的位置决定,并不是执行的位置决定。注意这里是 console.log(value) 和 console.log(this.value) 不一样!

在这里插入图片描述

输出结果是 { m : 2 } 和 { n :1,m : { m : 2 }}
理解引用值的赋值是地址和值一起赋给b,并且即使原来a 的地址改变了,b被赋予的地址依然是原来那个。
a.m = a = { m : 2 };这一行代码要从右往左执行,先改变了a 的地址,再给原来a的地址添加了一个属性m

在这里插入图片描述

有关原型链的知识还是有点乱。
记住:

  • 只有函数function才具有prototype属性。这个属性是一个指针,指向一个对象,这个对象的用途就是包含所有实例共享的属性和方法(我们把这个对象叫做原型对象)。例如这道题里的 Foo.prototype
  • 所有的对象都有__proto__ 属性(对象,函数),指向构造该对象的构造函数的原型。
  • 原型对象也有一个属性,叫做constructor,这个属性包含了一个指针,指回原构造函数。

这道题要理解上面的第三点 constructor 是去原型对象里面找的,但是这里 Foo.prototype 已经被自定义了,变成了一个空对象,空对象的constructor 是 Object

在这里插入图片描述

构造函数new 之后 就一定返回一个对象,因此内部如果return 是原始值,不影响,但是如果是引用值,就返回引用值。

未解
在这里插入图片描述
在这里插入图片描述

看仔细一点,两个函数其实都没有返回值。

在这里插入图片描述

预编译的问题,if 里面的var a 在预编译的时候就被提升了。还有 in 运算符

在这里插入图片描述

输出结果是百度、腾讯、阿里。qureySelectorAll() 是静态地取到节点的集合,不像getElementById是动态的。
还有就是 parentNode.replaceChild(newChild, oldChild) 语法中,要替换的新节点oldChild。如果它已经存在于DOM中,则首先将其删除。注意这一点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值