zoukankan      html  css  js  c++  java
  • 2021整理面试知识点

    1.null和undefined的区别

    null:代表空对象指针。现在没有,将来可能会有

    undefined:空,未定义。现在没有,将来也不会有(js中独有的数据类型)

    区别

    1)两者类型不一样

    console.log(typeof null)  // Object

    console.log(typeof undefined)  // undefined

    2)转成数值结果不一样

    console.log(Number(null))  // 0

    console.log(Number(undefined))  // NaN

    null出现情况:

    --某个元素找不到;

    --对象彻底销毁的时候为null(对象销毁,给复合数据类型赋值null,清除当前变量占用的内存)

    undefined出现情况:

    --变量未赋值

    --函数默认返回值

    --严格模式下this为undefined

    --简单类型加上属性为undefined

    2.js中检测数据类型的集中方式

    1)typeof

    一元运算符,用来检测数据类型。只可以检测:string、undefined、object、Boolean、function、number

    对基本数据类型是没问题的,引用数据类型不起作用(无法细分对象)

    2)instanceof

    二元运算符,用来检测某个对象是不是另一个对象的实例。

    只能用来判断对象和函数,不能判断字符串和数字

    例:

    let arr = [1, 2, 3]

    console.log(arr instanceof Array)  // true

    3)constructor

    js中所有对象都继承于Object,constructor是其中一个属性,默认指向实例的构造函数(可以修改)。

    例:

    function fs() {}

    let f = new fs

    console.log(f.constructor === fs)  // true

    console.log(f.constructor.name)  // fs

    4)[拓展] Object.prototype.toString.call

    js中,Object.prototype.toString()判断某个对象值属于哪种内置类型

    例:

    let dt = new Date

    console.log(Object.prototype.toString.call(dt)) // [Object Date]

    let arr = [1, 2, 3]

    console.log(Object.prototype.toString.call(arr))  // [Object Array]

    let fs = function() {}

    console.log(Object.prototype.toString.caal(fs))  // [Object Function]

    3.css3实现单行文本溢出显示省略号

    100px;

    white-space: nowrap;

    text-overflow: ellipsis;

    overflow: hidden;

    4.[了解]正则常用的修饰符与元字符

    https://www.cnblogs.com/theblogs/p/9943070.html

    5.闭包

    什么是闭包?

    闭包是一种保护机制,保护私有作用域中的私有变量不受全局变量的污染。

    js中,函数套函数,子函数使用父函数中的参数或者变量,且子函数被外界所引用(没有释放)。此时父函数的参数或变量不会被浏览器垃圾回收机制所回收,这时候父级便形成了闭包环境。

    例:

    function fs () {

      let a = 10

      return function() {

        a++

        console.log(a)

      }

    }

    let f = fs()

    console.dir(f)

    闭包特点:

    1)函数套函数

    2)子函数访问父函数的参数或者变量

    3)子函数被外界所使用着,没有释放

    闭包应用场景:

    1)存储父函数的变量或者参数

    2)保护私有变量不受外界干扰

    闭包缺点:

    相对于普通函数更消耗内存,使用不当容易造成内存泄漏;所以一般尽量避免使用闭包。

    6.es6箭头函数

    => 箭头函数是es6新增的函数表达式。(低版本浏览器不兼容)

    影响this的作用域。

    例:

    let fn = a => {

      return a

    }

    let fn  = a => a

    箭头函数需要注意的点:

    1)箭头函数不能new(不能当做构造函数),否则报错

    2)this指向不再是Window,而是父级(指向可变)

    3)不可以使用arguments,在函数体内不存在;如果需要使用,rest参数代替

    7.改变this指向的三种方法(call、apply、bind)

    共同点:

    三者都可以改变this指向。若第一参数为null/undefined,this默认指向window。

    区别:

    call、apply可以自动执行,bind不会自动执行,需要手动调用

    call、bind可以有无数个参数,apply只能传两个参数,第二个参数一定要为数组

    1)call(无数个参数)

    参1:this指向

    参2:实参

    使用之后会立即执行该函数。

    例:

    function fx(a, b, c) {

      console.log(this, a+b+c)  // window, NaN

    }

    fx()

    fx.call(document, 1, 2, 3)  // #document, 6

    2)apply(两个参数)

    参1:this指向

    参2:数组(实参)

    使用之后会立即执行该函数。

    例:

    function fx(a, b, c) {

      console.log(this, a+b+c)  // window, NaN

    }

    fx()

    fx.apply(document, [1, 2, 3]) // #document, 6

    3)bind(无数个参数)

    参1:this指向

    参2:实参

    返回值是一个新函数,新函数需要重新调用,不会自动执行。

    function fx(a, b, c) {

      console.log(this, a+b+c)  // window, NaN

    }

    let fxx = fx.bind(document, 1, 2, 3)

    fxx()  // #document, 6

    8.

    9.

  • 相关阅读:
    Unknown host mirrors.opencas.cn You may need to adjust the proxy settings in Gradle 报错及解决办法
    Design editor is unavaiable until next gradle sync报错及解决办法
    mkdir创建目录失败
    读书笔记之梦断代码(三)
    Android学习——更新数据
    Android学习——添加数据
    Android学习——升级数据库
    Android学习——创建数据库
    开课第十一周周总结
    Android学习——数据库简介
  • 原文地址:https://www.cnblogs.com/candy-xia/p/14822273.html
Copyright © 2011-2022 走看看