JS面试题—变量类型和计算

       JS面试题,是针对前端工程师面试时的一些知识点梳理,整篇会围绕题目、知识点、解答三个过程进行学习。本人也属于此次总结的学生,希望借此机会重新温习巩固基础知识。积硅步至千里,学习和应用就像搭积木一般,只有基础建好才能将积木搭得越高。

变量类型和计算

一、 题目

  1. JS中使用typeof能得到那些类型
  2. 何时使用=== 何时使用==
  3. JS中有哪些内置函数
  4. JS变量按存储区分为哪些类型,并描述其特点
  5. 如何理解JSON

二、知识点

变量类型
       值类型vs引用类型
       typeof运算符详解

变量计算
       强制类型转换

值类型

特点:每个变量都会存储各自的值,不会相互影响

    var a = 100
    var b = a
    a = 200
    console.log(b) //100

引用类型

特点:不同变量指针指向同一个对象 (引用类型包括数组、对象、函数)

    var a = {age:20}
    var b = a
    b.age = 21
    console.log(b.age) //21

区别:
JS面试题—变量类型和计算_第1张图片

       tips: 引用类型有个特点,那就是可以无限的扩展属性

typeof运算符详解

    typeof undefined // undefined
    typeof 'abc' //string
    typeof '123' //number
    typeof true //boolean
    typeof {} //object
    typeof [] //object
    typeof null //object
    typeof console.log //function

       tips: typeof只能区分值类型的详细类型、无法区分引用类型的详细类型、但可以区分出函数

变量计算—强制类型转换

  1. 字符串拼接
  2. ==运算符
  3. if语句
  4. 逻辑运算
    //字符串拼接
    var a = 100 + 10 // 110
    var b = 100 + '10' // '10010'

    //==运算符
    100 == '100' // true (把数字100转化为字符串‘100’进行比较)
    0 == '' // true (把数字0转化为false, 把空字符串转化为false 进行比较)
    null == undefined // truenullundefined转化为false相比)

    //if语句
    var a = true
    if(a){
        // 可以进入if语句
    }
    var b = 100
    if(b){
        // 可以进入if语句, b=100转化为了true
    }
    var c = ''
    if(c){
        // 无法进入if语句, 因为c=''转化为了false
    }

    //逻辑运算
    console.log(10 && 0) //0
    console.log('' || 'abc') //'abc'
    console.log(!window.abc) //true
    var a = 100
    console.log(!!a) // true

三、解答

       1.JS中使用typeof能得到那些类型

       如果改题是笔试题,那么将上面typeof运算符详解的代码段写上是没有问题的,如果是面试题,我们必须还需要将其区分将清楚,typeof对于值类型的是可以区分它们的详细类型,而对于引用类型是无法区分详细类型,但可以区分出引用类型的函数function类型,其中typeof null 比较特殊,它的类型也是一个object

       2.何时使用=== 何时使用==

        ==的情况,前面介绍知识点的时候已经解释过了,它们是会进行类型转换后再进行比较,而===是完全没有类型转换的,那么何时使用===,何时使用==呢?推荐参考jquery源码的写法,面试过程中可以拿出这个例子来解释、再深入你就直接流氓些说自己有代码洁癖,出了例子这种情况,别的都只用===

    if(obj.a == null){
        //这里想单于 obj.a === null || obj.a === undefined , 简写形式
        //这是jquery源码的写法
        //除了这种情况,别的一律使用 ===
    }

       3.JS中有哪些内置函数

    Object
    Array
    Boolean
    Number
    String
    Function
    Date
    RegExp
    Error

tips: 内置函数就有这几种,如果被问到他们的作用,那么需要理解哥哥内置函数的方法,以后有时间我也会从新去整理总结一下

       4.JS变量按存储区分为哪些类型,并描述其特点

    //值类型
    var a = 10
    var b = a
    a = 11
    console.log(b) //10

    //引用类型
    var obj1 = {x:100}
    var obj2 = obj1
    obj1.x = 200
    console.log(obj2.x) //200

存储方式前面已经解释过了,分为值类型和引用类型两种。 值类型把数值分块各自存储在一个变量类型中, 而引用类型好几个变量共用一个内存块,为了节省空间才这么做的。特点,值类型存储的变量的值相互不影响,而引用类型因指向同一个内存块,所以它们是相互影响的。

       5.如何理解JSON

    //JSON 只不过是一个 JS 对象而已
    JSON.stringify({a:10,b:20})
    JSON.parse('{"a":10,"b":20}')

JSON是JS的一个内置对象,前面提到了JS的内置函数,JSON并不属于函数范畴,它仅仅只是一个JS的对象,是一种数据格式,常用的方法只有两个,一个将对象转换为字符串,一个将字符串转换为对象。面试的时候应该回答的全面一些。

你可能感兴趣的:(javascript,html)