一些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题目
hi, nice work again. You should correct the typo (semi-colon missing) after : console.log(result);
Thank you for correcting me.