javascript进阶1

参考:[url]http://ejohn.org/apps/learn[/url]

答案在后面。
1、看下面的例子,能看得出输出什么?
var a = 5; 
function runMe(a){
console.log("a = " + a);//a=?

function innerRun(){
console.log("b = " + b);//b=?
console.log("c = " + c);//c=?
}

var b = 7;
innerRun();
var c = 8;
}
runMe(6);

for ( var d = 0; d < 3; d++ ) {
setTimeout(function(){
console.log("d = " + d);//d=?
}, 100);
}



2、下面代码输出是什么?
var count = 0;
for ( var i = 0; i < 4; i++ ) (function(i){
setTimeout(function(){
console.log(“i = ” + i);
}, i * 200);
})(i);


3、看下面的代码,最后输出是什么?
function Ninja(){ 
this.swingSword = function(){
return true;
};
}

Ninja.prototype.swingSword = function(){
return false;
};

var ninja = new Ninja();
console.log(ninja.swingSword());//false or true?



4、类的定义
先看下面的例子,能看得出有几个地方错误吗?
var a = {
a :0,
'b' :1,
'a' : 2,
class : 2,
first-name :2
};


5、看代码
var obj = {name : 'iteye'};
console.log(obj.age);//输出什么
console.log(obj.age.val);//这里又输出什么


6、第三行的写法正确吗?
function Ninja(){}
var ninja = new Ninja();
var ninjaB = new ninja.constructor();//可以这样写吗


7、方法的length表示什么意思?
function makeNinja(name){} 
function makeSamurai(name, rank){}
makeNinja.length//?
makeSamurai.length//?


8、
function ff(){
return 1;
}
function ff(x){
return 2;
}
function ff(x,y,z){
return 3;
}
console.log(ff(1));//输出?



9、基础的东西
var foo = 0;
var bar = 0
function ff(){
this.foo = 1
bar = 1;
car = 1;
var dar = 1;
}
ff();
console.log("foo = " + foo);
console.log("bar = " + bar);
console.log("car = " + car);
console.log("dar = " + dar);


10、最后压轴的:
function addMethod(object, name, fn){ 
var old = object[ name ];
object[ name ] = function(){
console.log("fn.length = " + fn.length);//输出?
if ( fn.length == arguments.length )
return fn.apply( this, arguments );
else if ( typeof old === "function" )
return old.apply( this, arguments );
};
}

var a = {};
addMethod(a, "find", function(){
console.log("in find()");
});

addMethod(a, "find", function(x){
console.log("in find(x)");
});

addMethod(a, "find", function(x, y){
console.log("in find(x, y)");
});

a.find();


答案:
1、运行结果
运行结果:
[quote]a = 6
b = 7
c = undefined
d = 3
d = 3
d = 3[/quote]
后面三个d=3结果比较意外吧。
2、
[quote]//i = 0
//i = 1
//i = 2
//i = 3[/quote]
3、
[quote]true[/quote]
类内定义的方法会覆盖prototype定义的方法。

4、有一个地方错误,第6行first-name因为有保留字减号所以需要用引号引起来。
[quote]var a = {
a :0,
'b' :1,
'a' : 2,
class : 2,
'first-name' :2
};[/quote]

5、第一次输出
[quote]undefined[/quote]
第二次就没有输出了,而是抛出错误
[quote]TypeError: obj.age is undefined[/quote]

6、这样写是正确的,等价于:
[quote]var ninjB = new Ninja();[/quote]

7、表示方法参数的个数。

8、输出为
[quote]3[/quote]
后面函数的定义会覆盖前面同名函数的定义,没有方法重载。

9、输出下面
[quote]foo = 1
bar = 1
car = 1
ReferenceError: dar is not defined[/quote]

10、这个是实现重载的一种方式。
[quote]fn.length = 2
fn.length = 1
fn.length = 0
in find()[/quote]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值