JavaScript 定义了几种数据类型? 哪些是原始类型?哪些是复杂类型?原始类型和复杂类型的区别是什么?
- 数值(number):整数和小数(比如1和3.14)
- 字符串(string):字符组成的文本(比如"Hello World")
- 布尔值(boolean):true(真)和false(假)两个特定值
- undefined:表示“未定义”或不存在,即此处目前没有任何值
- null:表示空缺,即此处应该有一个值,但目前为空
- 对象(object):各种值组成的集合
- 原始类型:数值、字符串、布尔值。表示Javascript中可用的数据或信息的最底层形式或最简单形式。
- 复杂类型:对象。因为一个对象往往是多个原始类型的值的合成,可以看作是一个存放各种值的容器。
- 特殊值:null,undefined
typeof和instanceof的作用和区别?
- typeof 是一个操作符,主要的目的是检测一个变量是不是基本数据类型的变量,同时也可以说是确定一个变量是字符串,数值,布尔值,还是undefined的最佳工具。
- instanceof主要的目的是检测引用类型,判断对象是Array,还是RegExp
其实typeof和instanceof的目的都是检测变量的类型,两个的区别在于typeof一般是检测的是基本数据类型,instanceof主要检测的是引用类型!
如何判断一个变量是否是数字、字符串、布尔、函数
利用typeof方法,如
typeof 123; //"number"
typeof "123"; //"string"
typeof true; //"boolean"
function f(){}
typeof f; //"function"
NaN是什么? 有什么特别之处?
NaN(Not a Number)即非数值,是一个特殊的数值,用于表示一个本来要返回数值的操作数未返回数值的情况。
- 任何涉及NaN的操作均会返回NaN
- NaN与任何值不相等,包括自身
如何把非数值转化为数值?
- Number()
- parseInt()
- parseFloat()
Number()可以应用于任何数据类型,parseInt()和parseFloat()专门应用于将字符串转换为数值。
==与===有什么区别
==:相等运算符,不会比较值的类型,两边类型不同的时候,先进行类型转换,再做比较
===:严格相等运算符,不仅比较值,而且还比较值的类型,当两边类型不一致时,不做类型转换,类型不同的一定不等,只有两者一致才为真
break与continue有什么区别
- break:终止这个循环体
- continue:终止当前循环,执行下一个循环
void 0 和 undefined在使用场景上有什么区别
undefined可以在局部作用域中被覆写,而void运算返回都是undefined。
以下代码的输出结果是?为什么?
console.log(1+1); // 2
console.log("2"+"4"); // 24 字符串相加
console.log(2+"4"); // 24 2被强制转换成字符串
console.log(+"4"); // 4 在只有一个字符串参数的时候会尝试将其转换为数字
以下代码的输出结果是?
var a = 1;
a+++a; // (a++)+a,第一个a为1,第二个a自增后的a=2,相加为3
typeof a+2; // "number2" typeof的优先级比+高
以下代码的输出结果是? 为什么
var a = 1;
var b = 3;
console.log( a+++b ); //a++增值了还没参与计算,所以还是1,再加b等于4。如果是++a+b,就是先增值再加b,等于5
遍历数组,把数组里的打印数组每一项的平方
var arr = [3,4,5];
for(var i=0;i<arr .length;i++){
console.log(arr [i]*arr [i]);
}
遍历 JSON, 打印里面的值
var obj = {
name: 'hunger',
sex: 'male',
age: 28
}
for(var key in obj){
console.log(obj[key]);
}