函数相关

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

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

其他

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

你可能感兴趣的:(函数相关)