首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

var fn = function(){ }和function fn() { }有什么区别

var fn = function(){ } 这种叫做函数表达式,必须先定义后使用。 function fn () { } 这种是函数声明,可以先使用后定义,它会对函数的声明进行一个提升。...var fun = function(){     console.log("前端资源网"); } fun(); 以上是没有任何问题的,我们把声明和使用颠倒位置: fun(); var fun = function... () {     console.log("前端资源网"); } 控制台报错:Uncaught TypeError: fun is not a function ?...再给大家来一个比较有趣的关于提升的例子: var a = 1; (function () {     console.log(a);     var a = 2;     console.log(a)...参考文档: var js=function(){}和function js(){}的区别 (adsbygoogle = window.adsbygoogle || []).push({

1.9K10
您找到你想要的搜索结果了吗?
是的
没有找到

jsvar、let、const区别

javascript中有三种声明变量的方式:var、let、const 1.var 作用域:全局或局部 var的作用域可以是全局或是局部,以下分四种情况说明: (1).当var关键字声明于函数内时是局部变量...(2)当var关键字声明于函数外时是全局变量,此时不论在函数外部还是内部都可以访问到。...(3)当var关键字第一次声明变量于函数外时是全局变量,并且在函数内又使用var关键字声明了同一名字的变量,那么后声明这个是局部变量只作用于函数内,对函数外第一次声明的变量不影响。...(4)当var关键字第一次声明变量于函数外时是全局变量,并且在函数内直接访问赋值了,那么此变量即是声明的那个变量。 var定义的变量可以修改,如果不初始化会输出undefined,但不会报错。

2.1K20

解释函数 foo() {} 和 var foo = function() {} 之间 foo 用法的差异

foo = function() { } 的解释:函数表达式 var foo = function() { } 也与定义函数相同,称为函数表达式。...var foo = function (params) {        // function body }; 在上面的语法中,函数是在没有名称的情况下定义的,因此我们可以将其称为匿名函数。...           var foo = function() { } (function expression)       <div id="output"...foo = function() { } 之间的区别 下表突出显示了函数 foo() { } 和 var foo = function() { } 之间的主要区别: 函数 foo() { } var...函数表达式是使用变量定义的,通常写为 var foo = function() {}。函数表达式不会被提升,必须在调用它们之前进行定义。

1.1K10

js中(function(){})()的写法用处

以前看到老师写js的单例模式时疑惑为什么要这么写 var singleton = (function () { var privateVariable; function privateFunction...)... } }; }()); 后来查了下资料,js中(function(){…})()立即执行函数写法理解,终于了解了。...来来来,首先嘛,JS中函数有两种命名方式 1、一种是声明式。 而声明式会导致函数提升,function会被解释器优先编译。即我们用声明式写函数,可以在任何区域声明,不会影响我们调用。...function XXX(){}1 2、一种是函数表达式 函数表达式我们经常使用,而函数表达式中的function则不会出现函数提升。而是JS解释器逐行解释,到了这一句才会解释。...var fn2 = function(){}();//对,就是这样 function fn1(){}();//{}会被忽略 而平常的function(){}则是一种声明式,如果加上()括号后,则会被编译器认为是函数表达式

3.4K00

JS底层理解var、let、const

引用数据类型的值是保存在内存中的对象,JS不允许直接访问内存中的位置,所以在操作的时候操作的是对象的引用;因此是引用数据类型是按照引用访问的。...函数声明和变量声明都会被提升,但是函数会首先被提升,然后才是变量 foo(); // 1 var foo; function foo(){ console.log(1); } foo = function...var foo; foo(); // 1 foo = function() { console.log(2); } 虽然重复的 var声明会被忽略掉,但是出现在后面的函数声明还是会覆盖之前的...foo(); // 3 function foo(){ console.log(1); } var foo = function() { console.log(2); } function...改成下面这样应该会更容易理解一些 // 去掉下面这行也是一样的,因为会优先访问函数作用域内部的变量 // var name = 'Tom'; (function() { var name; //

1.8K30

死磕JSvar、let、const 该怎么选?

function test() { var message = 'hi'; // 函数体内声明,为局部变量,函数体外无法引用 console.log(message) // 'hi' }...function test(){ let message = 'hi'; // 函数块中声明,函数体外无法引用 const message1 = 'hello'; // 函数块中声明,函数体外无法引用...} console.log(message) // 报错 console.log(message1) // 报错 因为 ECMAScript变量 属于松散类型,支持省略关键字直接定义的方式, function...var 声明的变量会自动提升到函数作用域顶部; var message = 'hi'; function test(){ console.log(message); // undefined...其实就是因为代码会被解释为: var message = 'hi'; function test(){ var message; // 自动提升到函数作用域顶部,先声明 console.log

1.9K10
领券