1.JavaScript 定义了几种数据类型? 哪些是原始类型?哪些是复杂类型?
- 六种数据类型(ES6新增第七种Symbol类型的值)
- 数值(Nmber):整数和小数(比如1和3.14)
- 字符串(String):字符组成的文本(比如”Hello World”)
- 布尔值(Boolean):true(真)和false(假)两个特定值
- Undefined:表示“未定义”或不存在,即由于目前没有定义,所以 此处暂时没有任何值
- Null:表示无值,即此处的值就是“无”的状态。
- 对象(Object):各种值组成的集合
- Symbol:表示独一无二的值。
- 原始类型:
- 数值(Number)
- 字符串(String)
- 布尔值(Boolean)
- Undefined
- Null
- Symbol
- 复杂类型
Object
2.如何判断一个变量是否是数字、字符串、布尔、函数
- typeof运算符
- instanceof运算符
- Object.prototype.toString方法
3. ==与===有什么区别
- ==表示相等操作符,先转换后比较,转换之后比较相等则返回true
- ===表示全等操作符,仅比较而不转换,未经转换就相等返回true
4. 以下代码的输出结果是?为什么?
- 2
number + number = 2 - 24
string + string = “24” - 24
只有一个字符串是是string,其另一个也转string类型,则叫做字符串拼接 - 4
加法运算符只有右边一个操作数,就是另一个运算符。 转换为数字
5. 以下代码的输出结果是?
- 3
等于(a++)+a ; a++ 返回1,自增a等于2,so 1+2 =3 - number2
typeof 优先级比加法运算符高,其实是(typeof a) + 2。起到了字符串拼接作用
6. NaN是什么? 有什么特别之处?
NaN 是一个全局对象的属性。
NaN 属性的初始值就是 NaN,和 Number.NaN 的值一样。在现代浏览器中(ES5中), NaN 属性是一个不可配置(non-configurable),不可写(non-writable)的属性。但在ES3中,这个属性的值是可以被更改的,但是也应该避免覆盖。
在编码很少直接使用到 NaN。通常都是在计算失败时,作为 Math 的某个方法的返回值出现的(例如:Math.sqrt(-1))或者尝试将一个字符串解析成数字但失败了的时候(例如:parseInt("blabla"))。
- NaN不等于任何值,包括它本身。
- 由于数组的indexOf方法,内部使用的是严格相等运算符,所以该方法对NaN不成立。
- NaN在布尔运算时被当作false。
- NaN与任何数(包括它自己)的运算,得到的都是NaN。
7. break与continue有什么区别?
- break 语句 中止当前循环,switch 语句或 label 语句,并把程序控制流转到紧接着被中止语句后面的语句。
- continue 语句结束当前(或标签)的循环语句的本次迭代,并继续执行循环的下一次迭代。
8. switch case 语句中的 break 有什么作用?
- switch case 语句中的 break关键字会导致代码执行流跳出switch语句,如果省略break关键字,就会导致执行完当前case后继续执行下一case。
9. 遍历数组,把数组里的打印数组每一项的平方
- 9,16,25
var arr = [3,4,5];
for(var i=0;i<arr.length;i++){
console.log(arr[i]**2);
}
10. 以下代码输出结果是? 为什么
- number2
(1),(typeof,a) //"number"
(2),(+,(1),b) //"number2"
(3),(>, c,0) // true
(4),(||,(2),(3)) //"number2"
(5),(=,val,(4)) //"number2" - bb undefined
(1),(==,d,5) //true
(2),(console.log(),'bb') // bb
(3),(console.log('bb') //undefined
(4),(&&,(1),(3)) // undefined
(5),(=,data,(4)) //undefinded - haha undefined
(1),(console.log(),'haha') //haha
(2),(console.log('haha') //undefined
(3),(||,0,(2)) // undefined
(4),(=,d,(3)) //undefined
(5),(=,data,(4)) //undefined - 2
(1),(!,"world") // true
(2),(!!,"from here!!") // ture
(3),(,,(1),(2)) // true
(4),(!!,"Hello") //true
(5),(+,true,true) //2
(6),(=,x,(5)) //2
11.以下代码的输出结果是? 为什么
- 4
首先++的优先级比+要高,所以先执行a++又a++自身是先执行后加一,所以是1+3结果为4