1.局部变量和全局变量
var n=1; function test(){ n++; alert(n); var a=1; alert(a); } test();
你的输出是什么?这个很简单吧。那么来一个难一点的。
var a=1; function test(){ a++; alert(a); var a=1; alert(a); } test();
你的输出是什么?还是2 ,1 吗 ?如果你认为是,ok,你要try一下,看一下你的推断是不是正确了。
分析:
a在test函数中会找声明语句,如果之前没有声明,会自动var a。这是a为undefined。此时a++,那么返回的结果是一个NaN
第二个就很简单了,no doubt,1.
2 Null 和Undefine 下载表达式为true是那一个呢?
A.null
instanceof Object
B.null === undefined
C.null == undefined
D.NaN == NaN
答案是C啦
具体区别看别人的blog了,http://blog.csdn.net/leadzen/article/details/3899392
3 函数命名作用域
var x = 1; if (function f() {}) { x += typeof f; } alert(x);
A .1
B.NaN
C.1undefined
答案是C,为什么呢 ?
function f在if条件内,用()包含,属于闭包运算,在()之内使用有效,反之为Undefined
另外一个原因是数字和字符相加转化为字符。
4
function f(){ return
f; }
var RET = (new f()
instanceof f);
var RET2 = (new f()
=== f);
alert(RET);
alert(RET2);
输出什么?false true
表示不理解,别人的解释:
此题考查是prototype与constructor,再看一下Javascript Objec Layout(猛一看有点晕,稳住就好了)。
如:A instanceof B. 其中,A必须是一个合法的JavaScript对象,B必须是一个合法的JavaScript函数 (function). 判断过程如下:
如果函数B在对象A的原型链 (prototype chain) 中被发现,那么instanceof操作符将返回true,否则返回false.
5 声明顺序
var y = 1, x = y = typeof x;
var RET = x;
A.1
B."number"
C.undefined
D."undefined"
what? D
此题考察变量声明以及运算顺序 :-) !
var y, x; // y=undefined, x=undefined y = 1; // y=1 y = typeof x; // y="undefined" x = y; // x="undefined"