您的位置:首页 > Web前端 > JavaScript

【转】外国朋友出的js题目,你能对几道

2016-04-25 10:54 218 查看
原文地址 http://perfectionkills.com/javascript-quiz/

中文地址加解释:by Aaron:http://www.cnblogs.com/aaronjs/p/3172112.html

附带了自己的理解,答案有争议的地方欢迎大家指出

题目一

这题目比较简单,注意下返回类型即可
x = [,][1];
即 x = typeof y = 'undefind'.
typeof 返回的是string类型就可以了
typeof typeof必然就是'string'了.


题目十三

function(foo){
return typeof foo.bar;
})({ foo: { bar: 1 } });


"undefined"
又是一个恶心的题目,纯文字游戏,大家看仔细看

先分解一下

var baz = { foo: { bar: 1 } };

(function(foo){
return typeof foo.bar;
})(baz);

去掉函数关联
var baz = { foo: { bar: 1 } };
var foo = baz;
typeof foo.bar;

最后,通过替代我们除去中间变量foo
var baz = { foo: { bar: 1 } };
typeof baz.bar;

所以现在就很清晰了,属性中没有定义baz;它被定义为baz.foo上了,所以结果是:”undefined"


题目十四

with (function(x, undefined){}) length;


2
with用得很少,with 语句就是用于暂修改作用域链的或者通常用来缩短特定情形下必须写的代码量

使用with语句的JavaScript代码很难优化,因此它的运算速度比不使用with语句的等价代码要慢得多。

而且,在with语句中的函数定义和变量初始化可能会产生令人惊讶的、相抵触的行为,因此我们避免使用with语句

with的用法是这样的:
with(object) {},在大括号里面,可以引用object的属性而不用使用object.attr这种形式。
这道题里面,with接受了一个对象,只不过这个对象是函数,函数有length属性,
代表形参的个数,所以上面返回的值是2

mozilla with http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Statements:with[/code] 
                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: