填坑-十万个为何?(12)

简介:不少概念不清或忘记,从新构建本身的知识体系。天天问本身1~多个问题。我是菜鸟 成为大神之路!html

1. JavaScript 中,定义函数时用 var foo = function () {} 和 function foo(){} 有什么区别?

这两个方法的根本区别:JavaScript 函数和变量声明的“提早”(hoist)行为函数

  • 若是咱们使用 匿名函数var foo = function () {}这种方式, 编译后变量声明foo 会“被提早”了,可是他的赋值(也就是function函数体)并不会被提早。 也就是,匿名函数只有在被调用时才被初始化ui

  • 若是咱们使用 function foo(){}这种方式, 编译后函数声明和他的赋值都会被提早。 也就是说函数声明过程在整个程序执行以前的预处理就完成了,因此只要处于同一个做用域,就能够访问到,即便在定义以前调用它也能够spa

foo();
function foo(){
    console.log('一次执行');
}
复制代码

var number = 0;
function foo(){
    console.log('一次执行',number);
}
foo();
function foo(){
    console.log('二次执行',number);
}
foo();
复制代码

参考文章中有涉及:第 13 天内容code

var foo = function(){}
var foo = function(){}();

function(){}
function(){}()
(function(){})();
(function(){}());

function foo(){}
function foo(){}();
function foo(){}(a);
(function foo(){});
(function foo(){})();
!function(){}();
new function(){}();
复制代码

参考文章:
www.cnblogs.com/TomXu/archi…
www.cnblogs.com/shuishuowob…cdn

相关文章
相关标签/搜索