1. JavaScript 定义了几种数据类型? 哪些是原始类型?哪些是复杂类型? 原始类型和复杂类型的区别是什么?
- 复杂类型:【对象】,一个对象是很多原始类型的值合成,可以看作是一个存放各种值的容器。
- 特殊值:【null】【undefined】,是两个特殊值。
- 原始类型:【字符串】【数值】【布尔值】,这3中原始类型不能再被细分,是最基本的数据类型。
2. typeof和instanceof的作用和区别?
- typeof是一元运算符,返回值为字符串,该字符串用来说明运算数的数据类型。用来获取运算数的数据类型。返回的值有number、boolean、undefined、function、object、string。
typeof 123//"number"
typeof "123"//"string"
typeof true//"boolean"
typeof ""//"string"
typeof " "//"string"
typeof Array//"function"
typeof undefined//"undefined"
//typeof可以用来检查一个没有声明的变量,而不报错。
typeof null//"object"
typeof []//"object"
typeof {}//"object"
//正因为【数组】【函数】【null】使用typeof都返回object,所以我们要判断某个对象是否是数组或者某个变量是否是对象的实例时就要使用instanceof.
- instanceof用于判断某个变量是否是某个对象的实例,返回值为true或false。
3. 如何判断一个变量是否是数字、字符串、布尔、函数
typeof 123 === 'number' //判断是否是数字,如果返回true,就是数字
typeof '123' === 'string' //判断是否为字符串,如果返回true,就是字符串
typeof true ==='boolean' //判断是否为布尔,如果返回true,就是布尔
typeof a ==='function' //判断是否为函数,如果返回true,就是函数
4. NaN是什么? 有什么特别之处?
- NaN即Not a Number,是一个空值,表示非数字,是js里面唯一个和自身不想等的数据类型,JavaScript把它包含在对象类型(object)之中。
5. 如何把非数值转化为数值?
- Number()
- parseInt()
- parseFloat()
6. ==与===有什么区别
- ==是值相等,js会自动进行类型转换
- ===是严格相等,就是所有的全部相等,只需注意NaN和自身不等即可。
- 如果两个值类型相同,就执行严格相等。
- 如果两个值不同,有一下几种情况:
- 如果一个是null,一个是undefined,那么相等。
- 如果一个是数字,一个是字符串,JS先将字符串转为数字,然后比较。
- 如果一个值是true/false,一个是数字,则将true/false转为1/0,然后比较。
- 如果一个值是对象,一个是数字或字符串,则尝试使用valueOf和toString转换后比较。
- 其它就不相等了。
7. break与continue有什么区别
- break 用于强制退出整个循环体,执行循环后面的语句。
- continue 用于退出本次循环,执行下次循环。
8. void 0 和 undefined在使用场景上有什么区别
- void运算符的作用是执行一个表达式,不可被重写,不返回任何值,或者说返回undefined。这个运算符主要是用于书签工具(bookmarklet),以及用于在超级链接中插入代码,目的是返回undefined可以防止网页跳转。
- undefined 不能被重写。但是在局部作用域中,还是可以被重写的。所以undefined现常用于全局环境。
9. 以下代码的输出结果是?为什么?
console.log(1+1);// 输出2,因为1是数值类型,两个数值类型使用"+"连接是正常的算数运算。
console.log("2"+"4");// 输出24,因为"2"和"4"是字符串 使用"+"连接会拼凑在一起。
console.log(2+"4"); //输出24,一个数值,一个字符串,使用"+"连接,JS会把数值转化为字符串然后进行拼凑。
console.log(+"4");//输出4,只有一个字符串JS会把字符串转为数值。
10. 以下代码的输出结果是?
var a = 1;
a+++a;
typeof a+2;//输出number2
11. 以下代码的输出结果是? 为什么?
var a = 1;
var b = 3;
console.log( a+++b );//输出4,a+++b相当于(a++)+b,在第一次运行a++是++不运算,a++还是1。
12. 遍历数组,把数组里的打印数组每一项的平方。
var arr = [3,4,5];
for(var i=0;i<arr.length;i++) {
console.log(arr[i]*arr[i])
}
13. 遍历 JSON, 打印里面的值
var obj = {
name: 'hunger',
sex: 'male',
age: 28
}
for(var value in obj) {
console.log(obj[value])
}
14. 以下代码输出结果是? 为什么 (选做题目)
var a = 1, b = 2, c = 3;
var val = typeof a + b || c >0
console.log(val) //输出number2,typeof a + b相当于(typeof a) + b,只要"||"前面的为true,不管"||"后面是什么值都为true.
var d = 5;
var data = d ==5 && console.log('bb')
console.log(data)//输出bb,只要"&&"前面的为false,不管"&&"后面是什么值都为false.
var data2 = d = 0 || console.log('haha')
console.log(data2)//输出haha,只要"||"前面的为false,不管"&&"后面是什么值都为false,如果后面不能转化为false或true,就返回后面的值。.
var x = !!"Hello" + (!"world", !!"from here!!");
console.log(x)//输出2,几个字符串相当于true,true=1,!true=false=0,!!true=true,所以就相当于:var x = true+(false+true),x=1+(0+1)=2,逗号操作符相当于加号。
网友评论