dfkt.net
当前位置:首页 >> js函数声明和函数表达式的区别 >>

js函数声明和函数表达式的区别

解析器在向执行环境中加载数据时,对函数声明和函数表达式并非一视同仁.解析器会率先读取函数声明,并使其在执行 任何代码之前可用;而函数表达式,则必须等到解析器执行到它所在的代码行,才会真正被解释执行.<br>alert(test(1));

什么是 Function Declaration(函数声明)?Function Declaration 可以定义命名的函数变量,而无需给变量赋值.Function Declaration 是一种独立的结构,不能嵌套在非功能模块中.可以将它类比为 Variable Declaration(变量声明).就像

var init = function() { }; 是函数表达式,函数在代码执行的到当前行的时候才被执行,init 才被赋值.function init() {} 是函数的声明,和 var 一样,会被提前到代码最前面定义.所以,下面的两个例子:1234567 foo(); // 在函数声明之后

上述两种方式除了定义的语法不同之外,最主要的区别是函数声明具有【函数声明提升】的特点,将函数声明提升到作用域顶端,意思是在执行代码之前会先读取函数声明,也就是说可以把函数声明放在函数调用的后面.例子1:test();//弹出

函数声明fun();function fun(){}这样定义一个函数的时候,解析器会将fun提前,所以,fun即使放在函数声明之前,也是可以正常运行的.函数表达式fun();var fun = function(){}这种解析器会先定义一个fun,也就是var fun;fun();fun = function(){};所以这样会出现错误.

:javascript虽然是解释执行的语言,但也会进行预编译. if(condition){ function sayHi(){ alert("Hi!"); } }else{ function sayHi(){ alert("Yo!"); } } 这种形式,JS引擎在预编译的过程中会注册方法到window对象下,就是window.sayHi.

function name(){}函数声明,var name =function(){}函数表达式var name=function(){}();并不符合以上两种,只能说都不是,但是这还需要看等号右边的匿名自运行函数的返回值在做最后的判断

函数声明fun();function fun(){}这样定义一个函数的时候,解析器会将fun提前,所以,fun即使放在函数声明之前,也是可以正常运行的.函数表达式fun();var fun = function(){}这种解析器会先定义一个fun,也就是var fun;fun();fun = function(){};所以这样会出现错误.

js的声明函数Function(){}跟声明类function(){} 一样的道理.

你好!没区别,第一种是把匿名函数赋值给一个变量第二种就是一个正常的非匿名函数希望对你有所帮助,望采纳.

jingxinwu.net | whkt.net | ndxg.net | lhxq.net | fnhp.net | 网站首页 | 网站地图
All rights reserved Powered by www.dfkt.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com