js面试题

本文解析了涉及闭包、原型链、this及变量提升等概念的JavaScript面试题,通过具体示例帮助理解这些核心概念。

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

最近参加面试时遇到的js题目,结果写在注释中:

主要涉及到闭包,原型链,还有this,变量提升等问题。

1.
(function(){
    var val=2; 
var json={
val:10,
dbl:function(){
  val*=2;
}
};
json.dbl();
alert(val);//4
alert(json.val+val);//14
}());
2.
var test=(function(i){
  return function(){
    alert(i*2);
  }
 }(2));
 test(5);//结果为4(只输出一个4)
3.
 var a=1,b=2;
 (function(p){
    alert(a+p);//NAN
var c=arguments[0];
var a=2;
alert(c);//2
alert(a+c);//4
 })(b);
4.
function C1(name){
  if(name)
    this.name=name;//new C1().name没有值,所以会去原型链上找,结果是Tom
}
function C2(name){
  this.name=name;//name没有定义,所以new C2().name的值存在,但为undefined
}
function C3(name){
  this.name=name||'John';//new C3().name值为John
}
C1.prototype.name='Tom';
C2.prototype.name='Tom';
C3.prototype.name='Tom';
alert((new C1().name)+(new C2().name)+(new C3().name));//TomundefinedJohn
5.
window.val=1;
var json={
        val:10,
dbl:function(){
    this.val*=2;
}
};
json.dbl();//this为json对象
alert(window.val);//1
alert(json.val);//20
var dbl=json.dbl;
dbl();//this为window
alert(window.val);//2
alert(json.val);//20
json.dbl.call(window);//this为window
alert(window.val+json.val);//24

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值