1.JavaScript 定义了几种数据类型? 哪些是原始类型?哪些是复杂类型?原始类型和复杂类型的区别是什么?
js定义了6种数据类型分别是 Number,String,undefined,null,boolean,object
null和undefined的区别是 null一般表示空值,而undefined表示没有值
原始类型是 数值,字符串,布尔类型
复杂类型是:object 对象:数组,函数,正则表达式。
至于undefined和null,一般则是将它们看作两个特殊的值。
原始类型与复杂类型的区别是:
原始类型是不能再细分的了,而复杂类型则是多个原始类型的值的合成,可以看作是一个存放各种值的容器。
2.typeof和instanceof的作用和区别?
typeof测试原始数据类型,instanceof测试实例类型





而instanceof可以区分数组和对象

3.如何判断一个变量是否是数字、字符串、布尔、函数


4.NaN是什么? 有什么特别之处?
NaN表示 非数字 Not a number,NaN和任何值都不相等。
特别之处是:NaN==NaN结果是false

5.如何把非数值转化为数值?
5.1 Number()
5.2 parseInt( )
3 parseFloat ( )

6.==与===有什么区别
==普通相等,表明是值的相等
而===则是严格相等,比较的是类型和值
7.break与continue有什么区别
break是跳出循环体,continue跳出单次循环
8.void 0 和 undefined在使用场景上有什么区别
undefined在JavaScript中并不属于保留字/关键字,因此在IE5.5~8中我们可以将其当作变量那样对其赋值(IE9+及其他现代浏览器中赋值给undefined将无效)于是采用void方式获取纯正的未经赋值的undefined则成了通用准则。void 变量 无论怎样结果都为undefined
9.以下代码的输出结果是?为什么?

9.1 console.log(1+1) 结果为2 , 因为两个操作数都是数字,会加做加法运算
9.2 console.log("2"+"4")结果为”24“ ,因为两个操作数是字符串,会做字符串拼接
9.3 console.log(2+"4")结果是”24“,因为当操作数中一个是字符串的时候,如果另一个不是字符串,则会将该操作数转为字符串,所以将2转为”2“,然后再做字符串的拼接。
9.4 console.log(+"4") 结果是4,当只有一个字符串参数的时候会将其转换为数字。
10. 以下代码的输出结果是?

结果是"number2"
优先级为 ++,+
分析:a+++a=(a++)+a
先执行a++结果为1,a=1+1=2,
1+a则结果为1+2=3.而 typeof a+2中typeof的优先级比+高 ,先执行 typeof a,结果为”number“,”number“+2,则是2转为”2“,然后做字符串的拼接,结果为”nuber2“
11. 以下代码的输出结果是? 为什么

结果为 4
分析:a+++b=(a++)+b,因为“++”的优先级高于“+”,所以先执行(a++),而(a++)是先执行后+,则结果为1,a=2,(a++)+b则是1+b=1+3=4.
12. 遍历数组,把数组里的打印数组每一项的平方


13. 遍历 JSON, 打印里面的值


14. 以下代码输出结果是? 为什么

14.1

结果为"number2"
分析:"||"或运算是前面的值为true,则不管后面的值如何,则结果为前面的值
优先级为: typeof + > || =
var vall=(typeof a)+b || (c>0)
typeof a结果为“number”,"number"+b结果为"number2", 或运算是“number2”为结果,因此 val为“number2”
14.2

结果为 undefined
只要“&&”前面是true,无论“&&”后面是true还是false,结果都将返“&&”后面的值;
优先级是: == && =
var data=(data==5)&&(console.log("bb") )
(data==5)结果为 true,&&运算以(console.log("bb") )的值为结果 undefined。因为函数表达式没有return 语句就会返回undefined
14.3

结果:undefined
只要“||”前面为false,无论“||”后面是true还是false,结果都返回“||”后面的值。
优先级:|| =
等式为 var data2=d=(0||console.log("haha"))
(0 || console.log("haha")) 0是false,结果undefined,因为函数表达式没有return 语句就会返回undefined
data2=undefined
14.4

结果: 2
当有逗号运算的时候取后面的值。
等式为:var x=true+(!!"form here!!")
=true+true
=2
关乎逻辑运算符的”短路”功能的总结如下
1、只要“||”前面为false,无论“||”后面是true还是false,结果都返回“||”后面的值。
2、只要“||”前面为true,无论“||”后面是true还是false,结果都返回“||”前面的值。
3、只要“&&”前面是false,无论“&&”后面是true还是false,结果都将返“&&”前面的值;
4、只要“&&”前面是true,无论“&&”后面是true还是false,结果都将返“&&”后面的值;
参考链接:https://www.cnblogs.com/pigtail/archive/2012/03/09/2387486.html
网友评论