现在的位置: 首页 > 综合 > 正文

Java Script 几个比较有意思的题目

2013年12月08日 ⁄ 综合 ⁄ 共 1125字 ⁄ 字号 评论关闭

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"

抱歉!评论已关闭.