美文网首页饥人谷技术博客
前端面试题之JavaScript(二)

前端面试题之JavaScript(二)

作者: 庄海鑫 | 来源:发表于2017-08-26 23:39 被阅读0次

    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<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

    相关文章

      网友评论

        本文标题:前端面试题之JavaScript(二)

        本文链接:https://www.haomeiwen.com/subject/vmyvdxtx.html