您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 工作范文 > 超实用的javascript代码段30道题目答案
·1·30个你不可能全会做的题目你答对了几道?答错了别急,看看答案,看看本书。有趣的题-答案1,以下表达式的运行结果是什么?[1,2,3].map(parseInt)A、[“1”,“2”,“3”]B、[1,2,3]C、[0,1,2]D、其它答案:D。解释:parseInt需要2个参数(val,radix),map却传递了3个参数(element,index,array)。2,以下表达式的运行结果是什么?[typeofnull,nullinstanceofObject]A、[object,false]B、[null,false]C、[object,true]D、其它答案:A。解释:Javascript规范规定,null和Object都是javascript中的数据类型,其中null表示空引用的一个特殊值,所以typeofnull-'object'(ECMA-262的规定),但是null值又不是以Object为原型创建出来的,所以nullinstanceofObject-'false'。3,以下表达式的运行结果是什么?[[3,2,1].reduce(Math.pow),[].reduce(Math.pow)]A、报错B、[9,0]C、[9,NaN]·2·D、[9,undefined]答案:A。解释:根据规范:在一个空数组上应用reduce会抛初始化错误的异常TypeError。4,以下表达式的运行结果是什么?varval='smtg';console.log('Valueis'+(val==='smtg')?'Something':'Nothing');A、SomethingB、NothingC、NaND、其它答案:D。解释:运行结果实际会打印'Something','+'操作符的优先级实际上比三元操作符要高。5,以下表达式的运行结果是什么?varname='World!';(function(){if(typeofname==='undefined'){varname='Jack';console.log('Goodbye'+name);}else{console.log('Hello'+name);}})();A、GoodbyeJackB、HelloJackC、GoodbyeundefinedD、Helloundefined答案:A。解释:var声明的作用域在整个function中,但并没有初始化。简单说,浏览器的JavaScript引擎首先会扫描所有的变量声明,并把变量声明上升到作用域的顶部,但是又不会改变变量赋值的位置。因此在实际的代码运行中,由于内层函数域的重新初始化干扰,外层域初始化'name'是假象,这就导致了在'name'未没初始化赋值之前,就判断其值,肯定是'undefined'。6,以下表达式的运行结果是什么?varEND=Math.pow(2,53);varSTART=END-100;varcount=0;·3·for(vari=START;i=END;i++){count++;}console.log(count);A、0B、100C、101D、其它答案:D。解释:这段代码会进入死循环,2^53是javascript中最大的数字,2^53+1与2^53等同,因此i永远也不会比这个数大。7,以下表达式的运行结果是什么?varary=[0,1,2];ary[10]=10;ary.filter(function(x){returnx===undefined;});A、[undefined×7]B、[0,1,2,10]C、[]D、[undefined]答案:C。解释:Array.prototype.filter不会应用到缺少的元素上。8,以下表达式的运行结果是什么?vartwo=0.2varone=0.1vareight=0.8varsix=0.6[two-one==one,eight-six==two]A、[true,true]B、[false,false]C、[true,false]D、其它答案:C。解释:JavaScript没有精确的数字,即便它看上去有时侯能正常工作。9,以下表达式的运行结果是什么?functionshowCase(value){·4·switch(value){case'A':console.log('CaseA');break;case'B':console.log('CaseB');break;caseundefined:console.log('undefined');break;default:console.log('Donotknow!');}}showCase(newString('A'));A、CaseAB、CaseBC、Donotknow!D、undefined答案:C。解释:switch使用===来枚举,并且newString(x)!==x。10,以下表达式的运行结果是什么?functionshowCase2(value){switch(value){case'A':console.log('CaseA');break;case'B':console.log('CaseB');break;caseundefined:console.log('undefined');break;default:console.log('Donotknow!');}}showCase2(String('A'));A、CaseAB、CaseBC、Donotknow!D、undefined·5·答案:C。解释:String(x)不会返回一个object但会返回一个string。11,以下表达式的运行结果是什么?functionisOdd(num){returnnum%2==1;}functionisEven(num){returnnum%2==0;}functionisSane(num){returnisEven(num)||isOdd(num);}varvalues=[7,4,'13',-9,Infinity];values.map(isSane);A、[true,true,true,true,true]B、[true,true,true,true,false]C、[true,true,true,false,false]D、[true,true,false,false,false]答案:C。解释:Infinity%2返回NaN,-9%2返回-1。12,以下表达式的运行结果是什么?parseInt(3,8)parseInt(3,2)parseInt(3,0)A、3,3,3B、3,3,NaNC、3,NaN,NaND、其它答案:D。解释:结果为“3,NaN,3“,3在2进制中不存在,很显然结果是NaN,但0呢?parseInt猜测你的意思是10,所有返回是3。13,以下表达式的运行结果是什么?Array.isArray(Array.prototype)A、trueB、false·6·C、报错D、其它答案:A。解释:Array.prototype是一个Array,附带了很多属性,Chrome打印结果如图(题1-1):题1-1Chrome打印Array.prototype部分截图14,以下表达式的运行结果是什么?vara=[0];if([0]){console.log(a==true);}else{console.log(wut);}A、trueB、falseC、”wut”D、其它答案:B。解释:[0]被认为是真的,但跟true又不等同15,以下表达式的运行结果是什么?[]==[]A、trueB、falseC、报错D、其它答案:B。解释:“==“很有趣吧,如果两边同为对象,但是引用指向不同,故为”false“·7·16,以下表达式的运行结果是什么?'5'+3'5'-3A、”53”,2B、8,2C、报错D、其它答案:A。解释:“Strings”知道怎么用”+“,但是遇到”-“就会会被转化为数字17,以下表达式的运行结果是什么?1+-+++-+1A、2B、1C、报错D、其它答案:A。解释:有趣的特性18,以下表达式的运行结果是什么?varary=Array(3);ary[0]=2ary.map(function(elem){return'1';});A、[2,1,1]B、[“1”,“1”,“1”]C、[2,“1”,“1”]D、其它答案:D。解释:结果是[1,undefined*2],因为map只能被初始化过的数组成员调用19,以下表达式的运行结果是什么?functionsidEffecting(ary){ary[0]=ary[2];}functionbar(a,b,c){c=10sidEffecting(arguments);returna+b+c;·8·}bar(1,1,1)A、3B、12C、报错D、其它答案:D。解释:结果是21,在javascript中变量中arguments是个对象,所以arguments和局部变量所引用的内容是一样的20,以下表达式的运行结果是什么?vara=111111111111111110000,b=1111;a+b;A、111111111111111111111B、111111111111111110000C、NaND、Infinity答案:B。解释:不精确的JavaScript数字即会影响小数,也会影响大数21,以下表达式的运行结果是什么?varx=[].reverse;x();A、[]B、undefinedC、报错D、window答案:D。解释:reverse函数有一个显式的接收者作为this,函数返回这个this,此处x的this是window,全局对象22,以下表达式的运行结果是什么?Number.MIN_VALUE0A、falseB、trueC、报错·9·D、其它答案:B。解释:Number.MIN_VALUE是能表示的最小的大于0的值23,以下表达式的运行结果是什么?[123,321]A、[true,true]B、[true,false]C、报错D、其它答案:A。解释:考隐式转换,我的理解12为true转换为1比较13肯定为true;32为false转换为0比较01为true24,以下表达式的运行结果是什么?//themostclassicwtf2==[[[2]]]A、trueB、falseC、undefinedD、其它答案:A。解释:每一个对象都被转换成了string,最终成了225,以下表达式的运行结果是什么?3.toString()3..toString()3...toString()A、”3”,error,errorB、”3”,“3.0”,errorC、error,“3”,errorD、其它答案:C。解释:3.x是一个合法的语法,结果为3带上尾数xtoString是合法的,但空字符串不是·10·26,以下表达式的运行结果是什么?(function(){varx=y=1;})();console.log(y);console.log(x);A、1,1B、error,errorC、1,errorD、其它答案:C。解释:y自动声明为全局变量27,列举一下IE与FF脚本兼容性的问题,例如:(1)window.event:表示当前的事件对象,IE有这个对象,FF没有,FF通过给事件处理函数传递事件对象(2)获取事件源IE用srcElement获取事件源,而FF用target获取事件源(3)添加,去除事件IE:element.attachEvent(“onclick”,function)element.detachEvent(“onclick”,function)FF:element.addEventListener(“click”,function,true)element.removeEventListener(“click”,function,true)(4)获取标签的自定义属性IE:div1.value或div1[
本文标题:超实用的javascript代码段30道题目答案
链接地址:https://www.777doc.com/doc-4426056 .html