参考:[url]http://ejohn.org/apps/learn[/url]
答案在后面。
1、看下面的例子,能看得出输出什么?
2、下面代码输出是什么?
3、看下面的代码,最后输出是什么?
4、类的定义
先看下面的例子,能看得出有几个地方错误吗?
5、看代码
6、第三行的写法正确吗?
7、方法的length表示什么意思?
8、
9、基础的东西
10、最后压轴的:
答案:
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]
答案在后面。
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]