js--笔试题2

本文详细解析了JavaScript表达式及其操作,包括方法调用、作用域提升、全局变量定义、正则表达式比较、原型链理解以及数组比较等核心概念。通过具体的例子和解析过程,帮助读者深入理解JavaScript的基础特性。

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

1.What is the result of this expression? (or multiple ones)

题目:

3.toString()
3..toString()
3...toString()

答案: error, “3”, error
解析:
虽然JavaScript会在调用方法时对原始值进行包装,但是这个点是小数点呢、还是方法调用的点呢,于是乎第一个就是error了,因为JavaScript解释器会将其认为是小数点。
而第二个则很好说通了,第一个点解释为小数点,变成了(3.0).toString(),结果就是”3”
第三个也是,第一个点为小数点,第二个是方法调用的点,但是后面接的不是一个合法的方法名,于是乎就error了

2.What is the result of this expression? (or multiple ones)

题目:

(function(){
  var x = y = 1;
})();
console.log(y);
console.log(x);

答案:1, error
解析:
变量提升和隐式定义全局变量,x变量提升但是函数局部变量,隐式定义了y这个全局变量

3.What is the result of this expression? (or multiple ones)

题目:

var a = /123/,
    b = /123/;
a == b
a === b

答案:false, false
解析:
console.log(typeof /123/);是object,正则表达式是对象,所以==左右两边是对象时,是判断二者是否指向同一个对象,则是false

4.What is the result of this expression? (or multiple ones)

题目:

var a = [1, 2, 3],
    b = [1, 2, 3],
    c = [1, 2, 4]
a == b
a === b
a > c
a < c

答案:false, false, false, true
解析:
typeof a和b都是object,所以前两个也是false,而JavaScript中Array的’>’运算符和’<’运算符的比较方式类似于字符串比较字典序,会从第一个元素开始进行比较,如果一样比较第二个,还一样就比较第三个,如此类推,所以第三个结果为false,第四个为true。

5.What is the result of this expression? (or multiple ones)

几个原型链的题目
题目:

var a = {}, b = Object.prototype;
[a.prototype === b, Object.getPrototypeOf(a) === b]

答案:
false,true
解析:
原型链:
构造函数:有一个指向原型对象的指针prototype
原型对象:有一个指向构造函数的指针constructor
实例:有一个指向原型对象的内部指针[[prototype]]
a是对象实例,有内部指针[[prototype]],但是没有指针prototype
实例和原型之间,实例中无法访问[[prototype]],一般确定实例和原型之间确定关系是用:isPrototypeOf()和getPrototypeOf()
题目:

function f() {}
var a = f.prototype, b = Object.getPrototypeOf(f);
a === b

答案:
false
解析:
Object.getPrototypeOf(f)是找到f.[[prototye]],和f.prototype不同,因此是false

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值