超实用的javascript代码段30道题目答案
更新时间:2023-03-11 07:41:01 阅读量: 教育文库 文档下载
- 超实用的微信表白代码推荐度:
- 相关推荐
·1·
30个你不可能全会做的题目
你答对了几道?答错了别急,看看答案,看看本书。
有趣的题-答案
1, 以下表达式的运行结果是什么?
[\
A、[“1”, “2”, “3”] B、[1, 2, 3] C、[0, 1, 2] D、其它
答案:D。
解释:parseInt需要2个参数(val, radix),map却传递了 3 个参数(element, index, array)。
2, 以下表达式的运行结果是什么?
[typeof null, null instanceof Object]
A、[\B、[null, false] C、[\D、其它
答案:A。
解释:Javascript规范规定,null和Object都是javascript中的数据类型,其中null表示空引用的一个特殊值,所以typeof null -> 'object' ( ECMA-262的规定 ),但是null值又不是以Object为原型创建出来的,所以null instanceof Object -> '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, 以下表达式的运行结果是什么?
var val = 'smtg';
console.log('Value is ' + (val === 'smtg') ? 'Something' : 'Nothing');
A、Something B、Nothing C、NaN D、其它
答案:D。
解释:运行结果实际会打印 'Something','+' 操作符的优先级实际上比三元操作符要高。
5, 以下表达式的运行结果是什么?
var name = 'World!'; (function () {
if (typeof name === 'undefined') { var name = 'Jack';
console.log('Goodbye ' + name); } else {
console.log('Hello ' + name); } })();
A、Goodbye Jack B、Hello Jack
C、Goodbye undefined D、Hello undefined
答案:A。
解释:var 声明的作用域在整个 function 中, 但并没有初始化。简单说,浏览器的JavaScript引擎首先会扫描所有的变量声明,并把变量声明上升到作用域的顶部,但是又不会改变变量赋值的位置。因此在实际的代码运行中,由于内层函数域的重新初始化干扰,外层域初始化'name'是假象,这就导致了在'name'未没初始化赋值之前,就判断其值,肯定是'undefined'。
6, 以下表达式的运行结果是什么?
var END = Math.pow(2, 53); var START = END - 100; var count = 0;
for (var i = START; i <= END; i++) { count++; }
console.log(count);
·3·
A、0 B、100 C、101 D、其它
答案:D。
解释:这段代码会进入死循环, 2^53 是javascript中最大的数字, 2^53+1 与 2^53 等同, 因此 i 永远也不会比这个数大。
7, 以下表达式的运行结果是什么?
var ary = [0,1,2]; ary[10] = 10;
ary.filter(function(x) { return x === undefined;});
A、[undefined × 7] B、[0, 1, 2, 10] C、[]
D、[undefined]
答案:C。
解释:Array.prototype.filter 不会应用到缺少的元素上。
8, 以下表达式的运行结果是什么?
var two = 0.2 var one = 0.1 var eight = 0.8 var six = 0.6
[two - one == one, eight - six == two]
A、[true, true] B、[false, false] C、[true, false] D、其它
答案:C。
解释:JavaScript 没有精确的数字, 即便它看上去有时侯能正常工作。
9, 以下表达式的运行结果是什么?
function showCase(value) {
· 4·
switch(value) {
case 'A':
console.log('Case A'); break; case 'B':
console.log('Case B'); break;
case undefined:
console.log('undefined'); break; default:
console.log('Do not know!'); } }
showCase(new String('A'));
A、Case A B、Case B
C、Do not know! D、undefined
答案:C。
解释:switch 使用 === 来枚举,并且 new String(x) !== x。
10,
以下表达式的运行结果是什么?
function showCase2(value) { switch(value) { case 'A':
console.log('Case A'); break; case 'B':
console.log('Case B'); break;
case undefined:
console.log('undefined'); break; default:
console.log('Do not know!'); } }
showCase2(String('A'));
A、Case A B、Case B
C、Do not know! D、undefined
答案:C。
解释:String(x) 不会返回一个 object 但会返回一个 string。
·5·
11,
以下表达式的运行结果是什么?
function isOdd(num) { return num % 2 == 1; }
function isEven(num) { return num % 2 == 0; }
function isSane(num) {
return isEven(num) || isOdd(num); }
var values = [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, 3 B、3, 3, NaN C、3, NaN, NaN D、其它
答案:D。
解释:结果为“3,NaN,3“,3 在2进制中不存在, 很显然结果是NaN, 但0呢? parseInt 猜测你的意思是10, 所有返回是3。
13,
以下表达式的运行结果是什么?
Array.isArray( Array.prototype )
A、true B、false
· 6·
C、报错
D、其它
答案:A。
解释:Array.prototype 是一个 Array,附带了很多属性,Chrome打印结果如图(题1-1):
题1-1 Chrome打印Array.prototype部分截图
14,
以下表达式的运行结果是什么?
var a = [0]; if ([0]) {
console.log(a == true); } else {
console.log(\}
A、true B、false C、”wut” D、其它
答案:B。
解释:[0] 被认为是真的,但跟 true 又不等同
15,
以下表达式的运行结果是什么?
[]==[]
A、true B、false C、报错 D、其它
答案:B。
解释:“==“很有趣吧,如果两边同为对象,但是引用指向不同,故为”false“
16,
以下表达式的运行结果是什么?
·7·
'5' + 3 '5' - 3
A、”53”, 2 B、8, 2 C、报错 D、其它
答案:A。
解释:“Strings”知道怎么用”+“, 但是遇到”-“就会会被转化为数字
17,
以下表达式的运行结果是什么?
1 + - + + + - + 1
A、2 B、1 C、报错 D、其它
答案:A。 解释:有趣的特性
18,
以下表达式的运行结果是什么?
var ary = Array(3); ary[0]=2
ary.map(function(elem) { return '1'; });
A、[2, 1, 1]
B、[“1”, “1”, “1”] C、[2, “1”, “1”] D、其它
答案:D。
解释:结果是[\因为map 只能被初始化过的数组成员调用
19,
以下表达式的运行结果是什么?
function sidEffecting(ary) { ary[0] = ary[2]; }
function bar(a,b,c) { c = 10
sidEffecting(arguments); return a + b + c;
· 8·
}
bar(1,1,1)
A、3 B、12 C、报错 D、其它
答案:D。
解释:结果是 21, 在javascript中变量中 arguments 是个对象,所以arguments 和局部变量所引用的内容是一样的
20,
以下表达式的运行结果是什么?
var a = 111111111111111110000, b = 1111; a + b;
A、111111111111111111111 B、111111111111111110000 C、NaN D、Infinity
答案:B。
解释:不精确的JavaScript数字即会影响小数,也会影响大数
21,
以下表达式的运行结果是什么?
var x = [].reverse; x();
A、[]
B、undefined C、报错 D、window
答案:D。
解释: reverse函数有一个显式的接收者作为this, 函数返回这个this, 此处x的this是window, 全局对象
22,
以下表达式的运行结果是什么?
Number.MIN_VALUE > 0
A、false B、true C、报错
D、其它
答案:B。
解释: Number.MIN_VALUE是能表示的最小的大于0的值
·9·
23,
以下表达式的运行结果是什么?
[1 < 2 < 3, 3 < 2 < 1]
A、[true, true] B、[true, false] C、报错 D、其它
答案:A。
解释: 考隐式转换,我的理解1<2为true转换为1比较1<3肯定为true;3<2为false转换为0比较0<1为true
24,
以下表达式的运行结果是什么?
// the most classic wtf 2 == [[[2]]]
A、true B、false
C、undefined D、其它
答案:A。
解释:每一个对象都被转换成了string,最终成了 \
25,
以下表达式的运行结果是什么?
3.toString() 3..toString() 3...toString()
A、”3”, error, error B、”3”, “3.0”, error C、error, “3”, error D、其它
答案:C。
解释:3.x 是一个合法的语法,结果为\带上尾数xtoString是合法的, 但空字符串不是
· 10·
26,
以下表达式的运行结果是什么?
(function(){
var x = y = 1; })();
console.log(y); console.log(x);
A、1, 1
B、error, error C、1, error D、其它
答案: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[“value”] FF:可用div1.getAttribute(“value”)
(5) document.getElementByName()和document.all[name]
IE;document.getElementByName()和document.all[name]均不能获取div元素 FF:可以
(6) input.type的属性 IE:input.type只读 FF:input.type可读写
(7) innerText textContent outerHTML IE:支持innerText, outerHTML FF:支持textContent
(8) 是否可用id代替HTML元素 IE:可以用id来代替HTML元素 FF:不可以
28,
以下函数有什么问题?如何改进?
·11·
function initButtons() {
var body = document.body, button, i;
for (i = 0; i < 5; i++) {
button = document.createElement(\ button.innerHTML = \ + i;
button.addEventListener(\ (e) { alert(i); }, false);
body.appendChild(button); } }
答案:(1)问题在于点击元素的时候,始终是最后一个被保存的值,因为多次循环的函数,触发事件的i是指向同一个i,可以利用闭包解决这个问题,将遍历的变量作为参数传递进去,这样每个被创建的元素事件都是访问匿名函数语法结构域中的变量了。小提醒,JavaScript的闭包环境由静态的句法结构确定。也就是说,代码一旦写成,我们就知道函数的自由变量同哪些环境里的变量绑定。因此,虽然运行时同一个内函数被调用多次,创建了多个闭包,这些闭包指向的都是同一个环境里的同一个变量。这样同JavaScript规定的闭包语义一致。
(2)改进代码如下
function initButtons() {
var body = document.body, button, i;
for (i = 0; i < 5; i++) {
button = document.createElement(\ button.innerHTML = \
button.addEventListener(\ return function (e) { alert(j); };
}(i), false);
body.appendChild(button); } }
29, 判断一个字符串中出现次数最多的字符,统计出现的次数?
答案:代码如下
var str = \字符例子
strO = {}, //存每个字符出现的次数,有唯一性
max = -1,//出现最多的次数
· 12·
max_key = \出现最多次数的字符
key;
for (var i = 0, l = str.length; i < l; i++) {//过滤每个字符的出现个数 var key = str[i]; if (!strO[key]) { strO[key] = 1; } else {
strO[key]++; } }
for (key in strO) {//寻找次数最多的字符
if (max < strO[key]) { max = strO[key]; max_key = key; } }
console.log(\
30,
请问以下两段代码有什么不同吗?
setTimeout(function() { /* 代码块... */
setTimeout(arguments.callee, 10); }, 10);
setInterval(function(){ /*代码块... */ }, 10);
答案:这两段代码虽然看起来效果差不多,但是本质不一样。第1段回调函数内的setTimeout是等待JavaScript引擎运行之后,才开始设定setTimeout,在上一个设定没有处理完毕之前不会设定下一个定时,理论间隔时间>=10ms;第二段setInterval在设置之后,就会每间隔10ms定时的设置触发线程,理论上两个间隔触发执行的任务是<=10ms
正在阅读:
建设工程施工合同范本(完整填写版)05-30
建立健全内部控制制度的措施02-27
再见了,新西兰作文500字07-10
DMX300A使用说明书新10-15
混凝土结构施工质量控制论文06-11
8B Unit7 Period2(Reading I)07-02
打败错误作文600字07-12
党员干部学习党委落实全面从严治党主体责任规定心得体会三篇09-10
陕西筝派音乐历史与现状研究05-02
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- javascript
- 题目
- 答案
- 代码
- 实用
- 第一章证券投资基金概述
- 005第五章外汇与汇率—F
- 会计理论专题
- 做好青年思想引导工作是共青团的根本任务
- 毕业论文《浅析刑事案件侦查中证人拒证的原因及对策》
- 13我 的 心 情陈赛艳
- 网络基础练习题库
- 南方电网-线损理论计算技术标准
- 图形数据结构实验
- 多传感器信息融合与CAN总线技术在煤矿井下环境监测中的应用
- 2018届高三年级第一学期工作计划
- 1 实习基本情况概述
- 计算机课程实验报告-《汇编语言与微机原理》 - 图文
- 打印机ESCPOS 控制指令
- 2013《数据库原理及应用》实验报告答案
- 乡镇司法所规范化建设调研报告
- 长沙市工程技术咨询行业企业名录2018版4286家 - 图文
- VMware UEM用户环境管理器以60分钟或更短时间部署
- 人教版六年级上册语文期中试卷(17)
- 粤经信节能〔2010〕739号关于印发广东省清洁生产审核报告编制范本的通知