http://perfectionkills.com/javascript-quiz/点击打开链接
针对 Ecmascript 第三版的选择题
arguments的typeof就是object
这种形式叫做命名的函数表达式,它的名字g只在函数体内可见。在函数外部不可见,所以报错。
函数中的delete没有生效,在函数内部,delete无法删除形参,但是删除的时候也不会报错
如果要删除x,那么就:x=undefined
赋值符号具有右结合性,所以typeof x得值为undefined,再赋值给y,然后再给x
函数接受本身作为自己的参数,这时要看谁的优先级高,明显参数的优先级高,typeof
1
下面的函数,执行foo.bar的时候,this指向的是Windows,全局中没有baz变量,所以为undefined
同上
首先要理解分组选择符,最后a会赋给什么呢? (转)
var
a = (1,2,3);
alert(a) ---> 3
那么这就简单了,f = function(){
return
2};
typeof
f() ---> number
与第二题有点类似
//x的值 转别人的 <a target=_blank href="http://www.cnblogs.com/qiongmiaoer/archive/2012/10/11/javascript_Quiz.html">点击打开链接</a>
函数声明只能裸露于全局作用域下或位于函数体中。
从句法上讲,它们不能出现在块中,例如不能出现在 if、while 或 for 语句中。因为块只能包含语句,
因此if()中的f函数不能当做函数声明,当成表达式使用
可能在预编译阶段做了如下处理
if((XXX = function(){}))
因此我们是找不到f的 , 1,undefined
题目中相当于var x=[”defined“,“undefined”]---------string
typeof string---------“string”
//自动执行函数的返回值?
分解一下
var bb = { foo: { bar: 1 } }
(function(j){
return typeof j.bar
})(bb)
"undefined"
注意那个对象只有foo属性,没有bar属性
函数提升了两次,第二次把第一次覆盖了,所以 return 后面的 f 是 return 语句的下一条语句声明的函数 f 。
注意自执行函数 (function f (){})(); 中的 f 并没有函数提升效果,它是表达式。所以最有是2
转自 <a target=_blank href="http://www.cnblogs.com/aaronzhang/archive/2013/05/19/3087811.html<a">点击打开链接</a>
好吧,我理解不了……
//最后一行结果?
由于函数f会返回自身,这个new 就形同虚设
如果f的形式为 function f(){return this}或function f(){}就不一样
false 构造函数本身在 new 的过程中会返回一个表示该对象的实例。但是函数的返回值覆盖了这个实例,所以答案是 false
with中有多少个参数,length就有多长。所以选2