函数相关

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

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

其他

  • 函数若未调用,即使声明出错也不会报;当然如果有行末出现逗号这种大的错误还是会报。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、问答 (一)函数声明和函数表达式有什么区别 ? 函数声明表示方法的例子: 函数表达式的例子: 那么他们之间有什...
    该帐号已被查封_才怪阅读 659评论 5 9
  • 上节课回顾: homework: 今日内容 一、函数 1.函数的基本概念 函数是把代码中功能相似并独立的代码单独封...
    穹蓝奥义阅读 190评论 0 0
  • 一、函数声明和函数表达式有什么区别? JavaScript有三种方法,可以定义一个函数。1.函数声明。如下面的例子...
    疯小儿阅读 244评论 0 0
  • 原文参考链接:http://javascript.ruanyifeng.com/grammar/function....
    jxnu薛哥阅读 252评论 0 2
  • 拷贝,顾名思义就是复制,分配新的内存,产生新的对象,与new关键字类似。然而,拷贝中存在部分隐匿的差别,需要我们细...
    采风JS阅读 635评论 0 40