JavaScript圣经中哪些奇怪的问题
Posted 客官不爱喝酒
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript圣经中哪些奇怪的问题相关的知识,希望对你有一定的参考价值。
1.概述
这些问题都是我在看JavaScript权威指南6的时候看到的,之前不是特别熟悉JavaScript,后来才发现原来JavaScript也是一门也有意思的语言。语言没有好坏,强弱之分,只能说使用的场景各不相同,这也要看你掌握的程度。
以下我在看书的时候,总结了一些问题,你看看你能对多少?就知道你对JavaScript的理解程度了。这些问题估计开发中不经常遇到,但是能让你明白JavaScript这门语言的一些特性,以及一些易错点,我们不光要会掉api,还有学会灵活使用,只有真正的理解了,才可以运用自如,得心应手。
2.看代码片段,写出答案:
1.看如下代码,写出输出结果:
function test(){
return
"hello";
}
console.log(test()) // 输出 undefined
答案:undefined
解释:因为JavaScript代码会解析为: return; “hello”;也就是说在break,continue,return之间随后的表达式不能进行换行,否则浏览器解析会把原本代码的意思解析为另外一个意思。
2.观察以下代码,写出输出结果::
var x=5; var y=2;
x
++
y
console.log(x,y)
答案:5,3,因为代码会被解析为:x; ++y; --和++运算符如果不写在同一行,++和–运算符将会作为下一行代码的前缀操作符与之一起解析。
3.观察一下代码,写出输出结果:
var str="hello";
str.len=4;
console.log(str.len) //输出 undefined
var str=new String("hello");
str.len="world";
console.log(str.len)
答案:第一个输出:undefined第二个输出:world
解释:当运行这段代码时, str.len的值是undefined。第二行代码创建一个临时字符串对象,并给其len属性赋值为4,随即销毁这个对象。第三行通过原始的(没有被修改过)字符串值创建一个新字符串对象,尝试读取其1en属性,这个属性自然不存在,表达式求值结果为undefined。这段代码说明了在读取字符串、数字和布尔值的属性值(或方法)的时候,表现的像对象一样。但如果你试图给其属性赋值,则会忽略这个操作:修改只是发生在临时对象身上,而这个临时对象并未继续保留下来。
原始类型的属性值是不能进行修改的,只有对象类型的属性才可以进行新增和修改。
当然我们也可以将原始类型的变量包装为对象类型的。
4.观察以下代码,写出输出结果:
var arr1=[1,2];
var arr2=[1,2];
console.log(arr1==arr2)
var a=[]
var b=a;
a[0]=2;
a[1]=3;
console.log(a===b,a,b)
答案:第一个输出:false,第二个输出:输出 true 并且 a和b的值都为 2,3
对象类型的变量,如果以对象之间进行赋值的形式来克隆某个对象的话,是达不到对象克隆的形式,当你去修改另外的一个对象的时候,另外一个对象也会随之改不变,因为这两个变量存放的都是同一个对象的引用,指向的是同一个对象,两个单独不同的对象或者是数组,即使值一样,但是他们比较的时永不相等。
就像你刚看到的如上代码,将对象(或数组)赋值给一个变量,仅仅是赋值的引用值:对象本身并没有复制一次。如果你想得到一个对象或数组的副本,则必须显式复制对象的每个属性或数组的每个元素。下面这个例子则是通过循环来完成数组复制
var a = ['a' , 'b' ,'c'];
// 待复制的数组
var b =[];
// 复制到的目标空数组
for(var i = 0; i < a.length; i++) {
// 遍历a[]中的每个元素
b[i] = a[i];
// 将元素值复制到b中
}
5.观察以下代码,写出输出结果:
// 20 两个字符串均转为数字
console.log("5"*"4");
// NAN 字符串无法转换为数字
console.log(1-'x');
// NANhello NAN转换为字符串 “NAN”
console.log(1-'x'+"hello")
// 字符串"2"被转换为 数字2 输出true 也允许字符串前后出现空格
console.log("2"==2)
// 隐式转换 将false转为0
console.log(false==0)
好了,今天就到这儿吧,有空在和大家进行分享。码字不易,如果此文对您有所帮助的话,请点个赞再走,谢谢。
以上是关于JavaScript圣经中哪些奇怪的问题的主要内容,如果未能解决你的问题,请参考以下文章