一些JavaScript测试题目

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
/*
== equality 等同,=== identity 恒等。
==, 两边值类型不同的时候,要先进行内部类型转换,再比较。
===,不做类型转换,类型不同的一定不等。
*/
 
var result = [10] + 1;
console.log(result);
 
//"101"
//存在运算符"+",意味着将[10]转化为一个值,相当于调用其valueOf()方法,而Array的valueOf相当于其toString
 
var result = ['a', 'b', 'c'] + "";
console.log(result);
//"a,b,c"
//与一个空字符相加,我们大可以就当成强行调用其toString方法,而Array的toString方法相当于调用其join方法,join的默认分隔符则为","
 
var result = 'a' + 5;
console.log(result);
//"a5"
//加号表达式优先考虑字符串拼接
 
var result = 3.75 | 0;
console.log(result);
//3
//数值|0 ,相当于对数值进行Math.floor() ,记住它不能取代Math.floor()的作用,只针对正数位运算| 时才相当于对数值进行Math.floor(),负数时就不行了。
 
var result = 65 / 'a';
console.log(result);
//NaN
//'a'首先要转换为一个Number类型,既然不能转换为一个正常的数字,就转换为NaN,与NaN进行运算结果都为NaN
 
var obj = {"10": 1};
obj[10] = 2;
obj[[1, 0]] = 3;
var result = obj["10"] + obj[10] + obj[[1, 0]];
console.log(result);
//7
//对象的键总为字符串,因此obj[10]相当于obj["10"],obj[[1,0]]相当于obj["1,0"]
 
var $ = {"":String};
var result = !!$[([])]();
console.log(result);
//false
//转换过程如下
//!!$[([])]() -->  !!$[""]() --> !!String() --> !!"" --> false
 
var result = (' \t\r\n ' == 0);
console.log(result);
//true
//考空白字符串的类型
//参见http://www.cnblogs.com/rubylouvre/archive/2009/09/18/1568794.html这里的回复讨论
 
var a = new String("123");
var b = "123";
var result = (a === b);
console.log(result);
//false
//一个为object一个为string
//同理:Number ,Boolean,Array ([])等对象
 
var a = {key: 1};
var b = {key: 1};
var result = (a == b);
console.log(result);
//false
//两个对象总是不等的,两个值的引用不是来自于同一个对象。
 
//var result_a={key_a:1,key_b:1};
//console.log(result_a.key_a==result_a.key_b);
//true
//如果两个值都引用同一个对象或函数,那么[相等];否则[不相等]。

作者:司徒正美

文章链接地址:一些javascript题目

站点统计