1.JavaScript 定义了几种数据类型? 哪些是原始类型?哪些是复杂类型?原始类型和复杂类型的区别是什么?
- 数据类型
- 数值(number):整数和小数(比如1和3.14)。
- 字符串(string):字符组成的文本(比如"Hello World")。
- 布尔值(boolean):true(真)和false(假)两个特定值。
- undefined:表示“未定义”或不存在,即此处目前没有任何值。
- null:表示空缺,即此处应该有一个值,但目前为空。
- 对象(object):各种值组成的集合。
- 原始类型
- 数值(number)
- 字符串(string)
- 布尔值(boolean)
- 复杂类型
- 数组(array)
- 函数(function)
- 正则表达式 (regexp)
- 原始类型和复杂类型的区别
- 原始类型(primitive type)是最基本的数据类型,不能再细分了。
- 复杂类型(complex type)可以看作是一个存放各种值的容器,因为一个对象往往是多个原始类型的值的合成。
2.typeof和instanceof的作用和区别?
- typeof 是一个操作符,主要的目的是检测一个变量是不是基本数据类型的变量,同时也可以说是确定一个变量是字符串,数值,布尔值,还是undefined
的最佳工具。 - instanceof主要的目的是检测引用类型,判断对象是Array,还是RegExp。
- 区别:typeof和instanceof的目的都是检测变量的类型,两个的区别在于typeof一般是检测的是基本数据类型,instanceof主要检测的是引用类型。
3.如何判断一个变量是否是数字、字符串、布尔、函数
数值 : typeof 123
返回 "number"
字符串: typeof '123'
返回 "string"
布尔值: typeof false
返回 "boolean"
函数: function f() {} typeof f
返回 function
4.NaN是什么? 有什么特别之处?
NaN含义是Not a Number,表示非数字,NaN和任何值都不相等,包括自己。NaN!==NaN
5.如何把非数值转化为数值?
有三个函数可以把非数值转换为数值 Number()
parseInt()
parseFloat()
。其中 parseInt()
parseFloat()
比较常用。
使用方法:
1.忽略字符串前面的空白字符,找到第一个非空白字符。
2.如果第一个字符不是-或者数字返回NaN。
3.如果是继续解析,直到非数值模式为止。
4.0开头会当做八进制,0x开头会当做十六进制,但是可以指定第二个参数指定基数。
parseInt('blue'); //NaN
parseInt('-23ABS'); // -23
parseInt('0xf1'); // 241
parseInt('101', 2); // 5
6.==与===有什么区别
==
是近似等于,===
是完全绝对等于。
![](https://img.haomeiwen.com/i4768945/24ea2b72280c0801.png)
在使用
==
的时候,javascript会做类型转换:1.如果两个值类型相同,则执行严格相等的运算
2.如果两个值的类型不同
2-1.如果一个是null,一个是undefined,那么相等
2-2.如果一个是数字,一个是字符串,先将字符串转为数字,然后比较
2-3.如果一个值是true/false则将其转为1/0比较
2-4.如果一个值是对象,一个是数字或字符串,则尝试使用valueOf和toString转换后比较
2-5.其它就不相等了
7.break与continue有什么区别
break 用于强制退出循环体,执行循环后面的语句。
continue 用于退出本次循环,执行下次循环。
![](https://img.haomeiwen.com/i4768945/d025e3ad7242f22a.png)
上一个循环输出的是:1,2,3。
下一个循环输出的是:1,2,3,5,6,7,9。
8.void 0 和 undefined在使用场景上有什么区别
void 会执行后面的表达式并返回 undefined,但是某些情境下undefined是可以被赋值的,比如在函数中,这样的话就不能用undefined来进行判断了。所以用void 0返回undefined来进行判断。既减少了在原形链上查找 window.undefined 的时间,也避免了误用被修改过的 undefined。
9.以下代码的输出结果是?为什么?
console.log(1+1); //2 在两个操作数都是数字的时候,会做加法运算
console.log("2"+"4"); //"24" 两个参数都是字符串的情况下会做字符串拼接
console.log(2+"4"); //"24" 有一个参数是字符串的情况下会把另外一个参数转换为字符串做字符串拼接
console.log(+"4"); //4 在只有一个字符串参数的时候会尝试将其转换为数字
10.以下代码的输出结果是?
var a = 1; a+++a; // a+++a = (a++)+a = 1 + 1 typeof a+2; // typeof a + 2 = (typeof a) + 2 所以输出结果是:number2
11.以下代码的输出结果是? 为什么?
var a = 1; var b = 3; console.log( a+++b );
//a+++b = (a++)+b = 1+3 所以输出结果是:4
12.遍历数组,把数组里的打印数组每一项的平方
![](https://img.haomeiwen.com/i4768945/bcae57318ec70434.png)
13.遍历 JSON, 打印里面的值
![](https://img.haomeiwen.com/i4768945/69d5967e2d00214c.png)
14. 以下代码输出结果是? 为什么 (选做题目)
![](https://img.haomeiwen.com/i4768945/f800f76e90dbe70d.png)
网友评论