您的位置:首页 > Web前端

前端题目

2015-06-22 09:50 302 查看
</pre><p>1.</p><p></p><pre name="code" class="javascript">var bb = 1;
function aa(bb) {
bb = 2;
alert(bb);
};
aa(bb);
alert(bb);


// 2 1

当时犯了个错误,以为aa()里面对bb赋值,全局变量bb就改变了。这里要注意bb是函数的参数

var bb = 1;
function aa(value) {
value = 2;
alert(value);
}
aa(bb);
alert(bb);


这样就能很清楚的看到,改变的是函数的参数,而不是全局变量

2.

function Foo() {
var i = 0;
return function() {
console.log(i++);
}
}

var f1 = Foo(),
f2 = Foo();
f1();
f1();
f2();


// 0 1 0还是没弄懂,闭包常驻内存。为什么f1()和f2()不是公用一份i

3.

if(! "a" in window){
var a = 1;
}
alert(a); // undefined


这题考的是变量前置。

!的优先级比in大,所以!'a'先转为false,再false in window,而不是!('a' in window)

虽然没有进入if{}里,但是变量声明被提前了

4.var f = function g() {
return 23;
};
typeof g();// g is not defined犀牛书P166页。对函数表达式来说,函数名是可选的,如果存在,该名字只存在函数体中。
所以这个是有函数名的函数表达式
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: