JS知识点积累

作者: 晚饭总吃撑 | 来源:发表于2021-09-01 17:41 被阅读0次

    1、mouseover和mouseenter的区别

    两者都是鼠标移入元素时触发,区别在于mouseenter不支持冒泡行为,mouseover有冒泡行为

    2、let和var的区别

    let是块级作用域,var是函数级作用域,let只在最近的大括号内有效,var是在最近的函数大括号内有效
    let不可以重复声明,var可以且会覆盖之前的声明
    var有变量提升,在声明变量前使用会返回undefined,let不存在变量提升,只能在声明之后使用

    3、获取一个变量的类型

    let param = 111
    Object.prototype.toString.call(param) //"[object Number]"
    let param = "aaa"
    Object.prototype.toString.call(param) //"[object String]"
    let param = true
    Object.prototype.toString.call(param) //"[object Boolean]"
    let param = null
    Object.prototype.toString.call(param) //"[object Null]"
    let param = undefined
    Object.prototype.toString.call(param) //"[object Undefined]"
    let param = []
    Object.prototype.toString.call(param) //"[object Array]"
    let param = {}
    Object.prototype.toString.call(param) //"[object Object]"
    let param = function(){}
    Object.prototype.toString.call(param) //"[object Function]"
    

    4、函数返回值默认是undefined,参数遗漏默认为传入undefined

    函数内部无明确返回值时,默认返回的是undefined

    function say(){
      return //没有明确返回值则默认返回undefined
    }
    
    function info(param){
      console.log(param)
    }
    info() //控制台打印undefined
    

    5、nvm切换node版本成功,node -v显示的依然是之前的版本

    从vue2.0切换到vue3.0的时候执行yarn dev报错Cannot find module 'worker_threads',原因是node版本过低,我是10.15.0,之后我使用nvm把node更新到15.6.0,然后发现node -v返回的还是10.15.0的版本,这个问题是因为我之前是先安装的node,后安装的nvm,这样导致之前安装的全局node版本不受nvm管理,解决办法就是把之前安装的node删除掉。
    执行which node命令,查看之前的node安装的位置,我的node安装的位置是/usr/local/bin/node,找到该文件把该文件删除掉,再使用nvm切换node,执行node -v就显示的切换后的node版本了

    6、npx的作用

    例如执行npm webpacknpx webpack,前者是直接到全局找webpack执行,后者是现在项目下的node_modules目录下找webpack,如果没找到再到全局去找

    7、?.的作用

    判断一个变量是否为真,如果为真取变量的某个属性值,如果为假则返回false

    const username= someValue.user?someValue.user.name:undefined
    const username = someValue.user?.name || undefined
    //以上两则实现的效果是相同的
    

    相关文章

      网友评论

        本文标题:JS知识点积累

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