快捷搜索:

Javascript Quiz

2019-12-21 作者:首页   |   浏览(157)

有段时间没来冒泡了,前些天,同事发了一个JavaScriptQuiz的链接,也解答了一下,下面贴出相应的题目及解答思路。顺便祝大家圣诞快乐!

  1. (function(){ returntypeofarguments; })(); A“object”B“array”C“arguments”D“undefined” 答案为:Aarguments是由控制器进入到function执行环境时创建的对象,其[[prototype]]为Object.prototype,参见ES262-310.1.6
  2. varf=functiong(){return23;}; typeofg(); A“number”B“undefined”C“function”DError 答案为:D和A都可以,需要区别浏览器,如果按照ES262的标准实现,应该是D参见:ES262-313Note
  3. (function(x){ deletex; returnx; })(1); A1BnullCundefinedDError 答案为:A参见ES262-311.4.1,ThedeleteOperator,IfType(Evaluate(UnaryExpression))isnotReference,returntrue.8.7,AReferenceisareferencetoapropertyofanobject.AReferenceconsistsoftwocomponents,thebaseobjectandthepropertyname.附加信息:8.6.1, DontDelete,Attemptstodeletethepropertywillbeignored.Seethedescriptionofthedeleteoperatorinsection11.4.1.10.1.6,活动对象中的arguments属性为{DontDelete}
  4. vary=1,x=y=typeofx; x; A1B“number”CundefinedD“undefined” 答案为:D这里容易将C和D搞混,首先,理解var的预编译,所有var声明会在控制器进入到执行环境时做的第一步事情,创建活动对象时进行处理,对应值都为undefined,接下来才是赋值操作.vary=1,x=y=typeofx;等同于vary,x;y=1;x=(y=typeofx);前面的y=1;可以忽略,所以只剩下x=(y=typeofx);x为undefined,经过typeof运算后,返回"undefined",typeof运算符返回结果都为string类型参见:ES262-311.4.3
  5. (functionf(f){ returntypeoff(); })(function(){return1;}); A“number”B“undefined”C“function”DError 答案为:A作用域问题,标识符查找的顺序,控制器进入函数时,活动对象将创建,arguments对象和其他声明都会被初始化到该对象,该活动对象会被插入到作用域链的顶端。参见:ES262-310.2.3
  6. varfoo={ bar:function(){returnthis.baz;}, baz:1 }; (function(){ returntypeofarguments[0](); })(foo.bar); A“undefined”B“object”C“number”D“function” 答案为:Athis的标识问题,注意arguments[0]();其实就是要去执行function(){returnthis.baz;},此时,this为globalObject,即window,而window上木有baz属性或变量。参见:ES262-310.1.7~10.2.3

本文由正版香港马报免费资料发布于首页,转载请注明出处:Javascript Quiz

关键词: