介绍Javascript函数声明和函数表达式之间的区别

介绍Javascript函数声明和函数表达式之间的区别
是一样的。首先,代码:
复制代码代码如下所示:

函数g(){
返回1;
};
如果(false){
f函数g(){
返回2;
};
}
警报((g));2
把这个代码到IE 6,铬是一种完全不同的两种效应。

输出2这里是IE6的效果,如果G出现在Chorme,它没有定义。

这也是Jscript的bug。

很明显,它只是一个函数表达式,定义G在条件语句中,函数表达式被定义,函数没有声明。

所以直接访问肯定会出错。

那么,什么是声明,什么是函数表达式

在ECMAscript,最常用的两种方法创建一个函数是一个函数的表达式和函数的声明,这两个时期之间的差异是有点晕,因为ECMA规范只明确了一点:函数的声明必须有标识符(标识符)(即我们常说的函数名称),你可以省略函数表达式中的标识符:
函数声明:
函数函数名(参数:可选){函数体}
函数表达式:
函数函数名(可选)(参数:可选){函数体}

所以我们可以看到,如果我们不声明函数名,它必须是一个表达式。如果我们声明函数的名称,我们怎么说它是函数声明或函数表达式ECMAscript是语境的区别,如果函数(Foo){ }是一个赋值作为它的一部分,它是一个函数表达式,如果函数(Foo){ }是包含在身体的一个函数,或是在上面,它是一个函数声明。

还有一个函数表达式是不太常见的,是括号括起来(函数),他之所以表示的原因是因为括号()是一个分组运算符,它只能包含内部表达式。

你可能会认为,在评价实施JSON的使用时间,JSON字符串通常包含在一个括号:eval('(' + JSON + ')'),这是因为这是分组操作符、括号,括号将解析JSON代替一块执行的代码表达式使分析器。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部