## JavaScript 定义了几种数据类型? 哪些是原始类型?哪些是复杂类型?原始类型和复杂类型的区别是什么?
原始类型:number类型,string类型,boolean类型
复杂类型:对象类型
区别:原始类型也叫基本类型、基础类型,不可细分;
复杂类型也叫引用类型,是一组无序功能/数据(key/value)对组合,可由多个原始类型组合而成;可以
再细分成:狭义的对象(object);数组(array),函数(function),正则表达式(regexp)
##typeof和instanceof的作用和区别?
都是用于检测数据类型;
typeof操作符用于直接检测给定变量的数据类型,返回值是代表数据类型的字符串;注:(typeof (null) //"object")
instanceof 也是用于确定某个对象是不是哪种具体类型;返回值是布尔值,(value instanceof Array)
##如何判断一个变量是否是数字、字符串、布尔、函数
用typeof 操作符
typeof (123 === "number" )
typeof ("abc"==="string" )
##NaN是什么? 有什么特别之处?
NaN是代表非数值,表示一个操作数本来要返回一个数值但并未返回任何数值的情况;
特别的地方:NaN ==NaN false;typeof (NaN) //“number”;任何和NaN的操作都会返回一个NaN;
##如何把非数值转化为数值?
Number();可以用于任何数据类型
parseInt();parseFloat(); 把字符串转化成数值
<高程P30~32>
##==与===有什么区别
===是严格意义上的相等,要求数值和类型上完全相等
##break与continue有什么区别
break立即跳出循环,强制执行循环体后面的语句;
continue是从该点立即跳出循环,跳回到循环体的顶部,继续往下执行该循环体
##void 0 和 undefined在使用场景上有什么区别
void 0 返回一个undefined,是一种严格意义上的undefined,不存在;但是在某些场景下可以给undefined赋值,这时的undefined不再是代表未定义,不存在,但是控制台并不会报错,所以无法判断是不是undefined。
##以下代码的输出结果是?为什么?
'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; //"number2" typeofa的优先级比较高
##11. 以下代码的输出结果是? 为什么
var a =1;var b =3;console.log( a+++b ); //先执行a++,再执行+b,1+3=4
##12. 遍历数组,把数组里的打印数组每一项的平方
var arr = [3,4,5]
for (var i =0 ;i<arr.length;i++) {
var newArr = arr[i]*arr[i];
return newArr;
}
##13. 遍历 JSON, 打印里面的值
varobj = { name:'hunger', sex:'male', age:28}
for (var key in obj) {
console.log(obj[key]);
}