为了账号安全,请及时绑定邮箱和手机立即绑定

155个JavaScript基础问题(6-10)

标签:
JavaScript
  1. 输出是什么?
let c = { greeting: 'Hey!' }
let d

d = c
c.greeting = 'Hello'
console.log(d.greeting)

复制代码

答:输出是 ‘Hello’,因为在JS中对象是一种引用类型,d和c指向的是同一片内存区域,所以对c进行修改,d指向的内容也发生了改变。

  1. 输出是什么?
let a = 3
let b = new Number(3)
let c = 3

console.log(a == b)
console.log(a === b)
console.log(b === c)

复制代码

答:输出是 true、false、false。之所以是这样,当我们是用符号时,系统会检测两边是否有相同的值,有时候还会对值进行转换的比较,但是如果我们使用=符号时,不仅要求两边要有相同的值,还要求有相同的类型,new Number出来的是一种对象,其身上不仅仅有值,还有一堆额外的功能。

  1. 输出是什么?
class Chameleon {
  static colorChange(newColor) {
    this.newColor = newColor
    return this.newColor
  }

  constructor({ newColor = 'green' } = {}) {
    this.newColor = newColor
  }
}

const freddie = new Chameleon({ newColor: 'purple' })
freddie.colorChange('orange')

复制代码

答:输出是TypeError,之所以是错误,原因在于Chameleon是一个类,colorChange是类中的静态方法,类中的静态方法只能被构造器使用,不能被实例进行调用。

  1. 输出是什么?
let greeting
greetign = {} // Typo!
console.log(greetign)

复制代码

答:输出的是{},表面上看greetign存在拼写错误,应该报错才对,但是这是在全局作用域下的,实际上是进行了赋值的,所以打印出的是{}.

  1. 当我们这么做会发生什么?
function bark() {
  console.log('Woof!')
}

bark.animal = 'dog'

复制代码

答:正常运行!之所以会这样,是因为JS中的函数也是一类特殊的对象,所以也可以通过点的形式添加属性。

作者:Always_positive
链接:https://juejin.cn/post/6967138727604781093
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消