美文网首页
函数相关

函数相关

作者: 李奔 | 来源:发表于2017-10-13 16:23 被阅读0次

    函数声明与函数表达式的区别

    26.js编写时遇到个问题:下面这两种写法竟然有区别,第一种写法无法正常使用CSS选择符???

    let myGet = document.querySelectorAll;
    function myGet(elmSel) {
        return document.querySelectorAll(elmSel);
    }
    //TypeError: Illegal invocation
    
    • 涉及函数提升。函数声明会将整个函数定义都提升,但是函数表达式只提升对变量的声明,变量的赋值并未得到提升。
    • 函数声明的函数提升会影响代码内在逻辑,应尽量避免使用
      比如下例:无视函数声明???变量提升!!!
    var a = function b(){
        return "expression"
    }
    function a(){
        return "function"
    }
    console.log(a)  //ƒ b(){return "expression"}
    
    • 函数表达式作为语句可以用在任何地方,包括if块等。
    • 函数名可以进行覆盖之前的声明,相当于函数名变量指向不同的内存,函数名也可以指向其他类型的变量。但是如果去声明,反而会SyntaxError: Identifier 'XXX' has already been declared

    其他

    • 函数若未调用,即使声明出错也不会报;当然如果有行末出现逗号这种大的错误还是会报。

    相关文章

      网友评论

          本文标题:函数相关

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