前端面试题之JavaScript(二)


1.JavaScript 定义了几种数据类型? 哪些是原始类型?哪些是复杂类型?

  • 六种数据类型(ES6新增第七种Symbol类型的值)
    1. 数值(Nmber):整数和小数(比如1和3.14)
    2. 字符串(String):字符组成的文本(比如”Hello World”)
    3. 布尔值(Boolean):true(真)和false(假)两个特定值
    4. Undefined:表示“未定义”或不存在,即由于目前没有定义,所以 此处暂时没有任何值
    5. Null:表示无值,即此处的值就是“无”的状态。
    6. 对象(Object):各种值组成的集合
    7. Symbol:表示独一无二的值。
  • 原始类型:
    1. 数值(Number)
    2. 字符串(String)
    3. 布尔值(Boolean)
    4. Undefined
    5. Null
    6. 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

10. 以下代码输出结果是? 为什么

前端面试题之JavaScript(二)_第1张图片
  • 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

你可能感兴趣的:(前端面试题之JavaScript(二))