1:JavaScript定义了几种数据类型?哪些是复杂类型?区别
六种数据类型
原始:String、boolean、number
复杂:object因为它可以看做存放原始类型的容器,把对象细分又可以分为数组array、函数function、正则表达式regexp。null、undefined是两种特殊类型
es6又新加了一个新的基本类型:Symbol
2:typeof和instanceo的作用和区别?
typeof:检测给定变量的数据类型;
instanceo:判断一个变量是否是某个对象的实例,返回布尔值,只能用来判断对象和函数,不能判断字符串和数字等!
3:如何判断一个变量是数字、字符串、布尔、函数?
使用typeof判断;例如:typeof 123 //‘number’
4:NaN是什么?有什么特别之处?
NaN:not a Number,表示非数字。NaN和任何值都不相等,包括NaN自己;
5:如何把非数值转化为数值?
三个函数:Number()、parSeInt()、parSeFloat(),
空字符串转化为0,使用类似乎与Parseint()/parseFloat()的时候可以向函数传递第二个参数如:parseint(a,8)即调用8进制来解析;
6:==和===有什么区别?
==:比较数值是否相等;
===:比较数据类型和数值是否相等,即全等;
7:break与continue有什么区别?
break:用于强制退出循环体,执行循环后面的语句,
continue:用于退出本次循环,执行下次循环;
8:void 0 和undefined 在使用场景上有什么区别?
undefined可以在局部作用域中被重写,而void运算符返回的永远都是undefined
从用 void 0 代替 undefined 说起——伯乐在线
void运算符——MDN
9.以下代码的输出结果是?为什么?
console.log(1+1);
console.log("2"+"4");
console.log(2+"4");
console.log(+"4");
答案:2、24、24、4
10. 以下代码的输出结果是?
var a = 1;
a+++a;
typeof a+2;
答案:3、number2
11. 以下代码的输出结果是? 为什么
var a = 1;
var b = 3;
console.log( a+++b );
答案:4
12. 遍历数组,把数组里的打印数组每一项的平方
var arr = [3,4,5]
答案:for(var i=0;i0
console.log(val)
答案:number2
运算符优先级看 typeof > + > > > ||
先算出typeof a是number
再算"number"+b,得到number2
然后是c>0 ,得到true
然后计算number2 || true
number2转化为布尔值为true,得出true
返回number2
14-2:
var d = 5;
var data = d ==5 && console.log('bb')
console.log(data)
答案:bb、undefined
从运算符优先级看console.log() > == > && > =
console.log(‘bb’)输出bb
判断d是否等于5,得出true
判断true和console.log(),是否都为true
console.log('bb')无法被隐式转化为布尔值
得到undefined
undefined赋给data
14-3:
var data2 = d = 0 || console.log('haha')
console.log(data2)
答案:haha、undefined
运算符优先级 console.log() > ll > =
且赋值方向是从右向左的
先执行console.log();
判断0和console.log(‘haha’)是否其中有true
得出undefined
最终将undefined赋值给data2
14-4:
var x = !!"Hello" + (!"world", !!"from here!!");
console.log(x)
答案:2
运算符优先级
! > + > =
字符串前加!强制转换成布尔值,并转换成false
!!代表双重否定 结果为TRUE
!!"hello ,!!"from here!!"转换为true
!"world"转换为false
当布尔值相加时,会转换为1和0,分别由true和false转换而来