27道js题

开始
原文网址:http://javascript-puzzlers.herokuapp.com/
本文是题目来自以上网址,解析是自己写的

1. ["1", "2", "3"].map(parseInt)
A ["1","2","3"] B [1,2,3] C [0,1,3] D other
选D ohter 也就是 [1,NaN,NaN]:parseInt("字符串",redix),redix表示要解析的数字的基数。该值介于 2 ~ 36 之间,也就是进制数;map函数传入3个参数(item,index,array) ,所以[parseInt("1",0), parseInt("1",1) ,parseInt("1",2) ] 当redix为0时,默认十进制,如果它以 “0x” 或 “0X” 开头,将以 16 为基数。

2. [typeof null, null instanceof Object]
A ["object",false] B [null,false] C ["object",true] D other
选A null 类型是一个对象,typeof 是显示null的类型,但null与object本质不是一个数据类型 null instanceof Object为false
3. [ [3,2,1].reduce(Math.pow), [].reduce(Math.pow) ]
A an error B[9,0] C[9,NaN] D[9,undefined]
选 A [9,报错] [2,3].reduce(Math.pow)=2^3=8

4. var val = ‘smtg‘;
console.log(‘Value is ‘ + (val === ‘smtg‘) ? ‘Something‘ : ‘Nothing‘);
答: Something
解析:‘Value is ‘ + (val === ‘smtg‘)为string为true, 所以打印Something

5.
var name = ‘World!‘;
(function () {
if (typeof name === ‘undefined‘) {
var name = ‘Jack‘;
console.log(‘Goodbye ‘ + name);
} else {
console.log(‘Hello ‘ + name);
}
})();
答:Goodbye Jack 解析:if中也存在变量申明提前

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);
答:count 会进入一个无限循环 2^53过大,START不管怎么加一都等于END

7.
var ary = [0,1,2];
ary[10] = 10;
ary.filter(function(x) { return x === undefined;});
答: [] 解析:filter会直接跳过数组不存在值的部分,所以值符合要求

8.
var two = 0.2
var one = 0.1
var eight = 0.8
var six = 0.6
以下结果为?
[two - one == one, eight - six == two]
答:[true,false] two - one=0.1 0.8-0.6=0.20000000000000007 0.1+0.2=0.30000000000000004

9.
function showCase(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!‘);
}
}
showCase(new String(‘A‘));
答: ‘Do not know!‘ switch使用的是===, new String(‘A‘)是新对象
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‘));
答: 没啥好说的 Case A
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);//?返回数组是?
答 [true,,true,true,false,false] -9%2为-1,‘13‘%2会自动转为Number,Infinity%2 为NaN
12.
parseInt(3, 8)
parseInt(3, 2)
parseInt(3, 0)
答:[3,NaN,3] 上面讲过

13. Array.isArray( Array.prototype )
答: true 数组原型也是数组

14.
var a = [0];
if ([0]) {
console.log(a == true);
} else {
console.log("wut");
}
答: false 解析:在if([0])中作为布尔值为true,[0]==true中作为0是false

15. []==[]
答: false 不好解析 知乎解析:https://www.zhihu.com/question/29615998

16.
‘5‘ + 3
‘5‘ - 3
答: ‘53‘,2 ‘+‘使3转为字符串,但‘-‘使字符串转为数字 exp:-‘223‘ 为-223

17. 1 + - + + + - + 1
答: 2 貌似没啥玄机的 1 + - + + + - + - 1为0就看最后的符号是加还是减

18.
var ary = Array(3);
ary[0]=2
ary.map(function(elem) { return ‘1‘; });//?返回的数组是?
答:[1, , ] 解析:map函数会跳过没有值的部分

19.
function sidEffecting(ary) {
ary[0] = ary[2];
}
function bar(a,b,c) {
c = 10
sidEffecting(arguments);
return a + b + c;
}
bar(1,1,1)
答:21 解析:在sidEffecting(arguments);输入console.log(arguments);你会发现打印出{ ‘0‘: 10, ‘1‘: 1, ‘2‘: 10 },
arguments对象是参数的集合,类似数组但又不是数组,在bar函数中可以初步认为变化3次,arguments输入时为{‘0‘:1,‘1‘:1,‘2‘:10}经过sidEffecting函数{ ‘0‘: 10, ‘1‘: 1, ‘2‘: 10 }所以a=10,b=1,c=10。

20. var a = 111111111111111110000,
b=1111;
a + b;
答 111111111111111110000 解析:js中的精度问题影响了小数和大数,但是如果b = 111111111111111111111;那么结果a+b为222222222222222230000

21. var x = [].reverse;
x();
答:window 查的解析: [] .reverse将返回this,如果没有显式接收器对象调用,它将默认为默认的此AKA窗口

22. Number.MIN_VALUE > 0
答: true 解析 Number的最小值大于0

23. [1 < 2 < 3, 3 < 2 < 1]
答: [true,true] true为1,false为0

24.   2 == [[[2]]]
答:true  解析:两边都被转为字符串

25.
3.toString()
3..toString()
3...toString()
答: error,"3",error

26.
(function(){
var x = y = 1;
})();
console.log(y);
console.log(x);

答: 1,error y是全局的要注意

27.
var a = /123/,
b = /123/;
a == b
a === b
答:false,false 解析:匹配对象不相等

时间: 2024-10-05 04:58:46

27道js题的相关文章

关于perfectionkills上的那些js题

今天晚上研究了下perfectionkills上的14道js题目,说实话,还挺搞脑子的,那么我们下面来分析分析吧~ 1. (function(){ return typeof arguments; })(); 结果是"object",arguments是一个类数组,不论它到底是数组还是对象,typeof的结果肯定是"object"啦,当然类数组本身就是对象,Object.prototype.toString.call(arguments)的结果是[object Ar

POJ百道水题列表

以下是poj百道水题,新手可以考虑从这里刷起 搜索1002 Fire Net1004 Anagrams by Stack1005 Jugs1008 Gnome Tetravex1091 Knight Moves1101 Gamblers1204 Additive equations 1221 Risk1230 Legendary Pokemon1249 Pushing Boxes 1364 Machine Schedule1368 BOAT1406 Jungle Roads1411 Annive

几道js的笔试题

一.今天在群里看见有同学发了几道关于js的笔试题,拿来研究一下,虽然自己看过了高级程序设计,也看了javascript语言精粹,自以为对js还是有一些理解的,但是真正遇到问题的时候,发现并不能融会贯通,掌握的不扎实.借此机会来回顾一下,共同学习~ 二.几道小题(写出以下几道题的弹出框的内容) (1) 1 if(!("a" in window)){ 2 var a=1; 3 } 4 alert(a); 解析:正常的思路:首先需要了解函数声明提升的概念,在执行代码之前,会先读取函数或者变量

关于SQL的几道小题详解

关于SQL的几道小题详解 当我们拿到题目的时候,并不是急于作答,那样会得不偿失的,而是分析思路,采用什么方法,达到什么目的,还要思考有没有简单的方法或者通用的方法等等,这样才会达到以一当十的效果,这样的惯性思维其实早在我们度高中的时候就被领教了,所谓“万变不离其宗”吧.以下各题来自日常所见,或QQ群,或面试题,或博客园. 题目一:如下表所示,现需要按照收款员统计收款和退款合计金额. 实现结果需如下显示: 分析:想要的结果(记为表B)和源数据(记为表A)相比,有共同的列(收款员),不同的是表A的金

汤姆大叔的6道js题目

汤姆大叔的6道javascript编程题题解 看汤姆大叔的博文,其中有篇(猛戳这里)的最后有6道编程题,于是我也试试,大家都可以先试试. 1.找出数字数组中最大的元素(使用Math.max函数) 1 2 3 var a = [1, 2, 3, 6, 5, 4]; var ans = Math.max.apply(null, a); console.log(ans);  // 6 这题很巧妙地用了apply,如果不是数组,是很多数字求最大值,我们知道可以这样: 1 2 var ans = Math

逛园子,看到个练习题,小试了一把(淘宝ued的两道小题)

闲来无事,逛园子,充充电.发现了一个挺有意思的博文,自己玩了一把. 第一题:使用 HTML+CSS 实现如图布局,border-widht 1px,一个格子大小是 60*60,hover时候边框变为橘红色(兼容IE6+,考虑语义化的结构) 效果图: 简单分析一下: 使用伪类 :hover的时候相对定位 改变z-index, 代码如下: 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta c

一道有趣的js题以及个人的理解

var number = 2; var obj = { number : 4, fn1 : ( function() { this.number *= 2; number=number*2; var number=3; return function() { this.number *= 2; number*=3; alert(number); } } )(), db2:function(){this.number*=2} }; var fn1 = obj.fn1; alert(number);

各位大佬Python的第一部分道基础题已经整理好了,希望大家面试的时候能用的上。

Python的第一部分道基础题,希望大家面试的时候能用的上. 1.为什么学习Python? Python是目前市面上,我个人认为是最简洁.最优雅.最有前途.最全能的编程语言,没有之一. 2.通过什么途径学习的Python? 通过自学,包括网上查看一些视频,购买一些相关专业的书籍. 3.Python和Java.PHP.C.C#.C++等其他语言相比? Python:轻量级.易学.自由/开放源码软件.可移植性.支持面向对象.丰富的库.规范的代码. Java:优点:开源性,功能强大,库多 缺点:编译速

大数--几道水题,用来学学JAVA

几道水题,练习一下JAVA写大数 poj2305  Basic remains 大数可以直接用非十进制读入,读入的数在变量中是十进制的 输出的时候要先用BigInteger的toString方法转换为相应的进制 1 import java.math.*; 2 import java.util.*; 3 class Main 4 { 5 public static void main(String[] args) 6 { 7 Scanner cin = new Scanner(System.in)