javascript函数表达式有存在的必要吗?

 我来答
千锋教育
2016-01-24 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
展开全部
javascript函数表达式有存在的必要的。
 在javascript中,函数有两种定义写法,函数定义表达式和函数声明,其例子分别如下所示:
  var test = function(x){
    return x;
  }

  function test(x){
    return x;
  }
尽管函数定义表达式和函数声明语句包含相同的函数名,并且都创建了新的函数对象,但是这二者却有区别。
  函数声明语句中的函数名是一个变量名,变量指向函数对象。
  函数定义表达式和通过var声明变量一样,其函数被提前到了脚本或函数的顶部,因此它在整个脚本和或函数内都是可见的。这样的话,只有函数变量声明提前了,函数的初始化代码仍然在原来的位置。但是使用函数声明的话,函数名称和函数体均提前了,即脚本中的函数和函数中嵌套的函数都会在当前上下文中其它代码之前声明,也即可以在声明一个函数之前调用它。
  举个例子:
  test(1);
  function test(x){
    console.log(x);
  }
  上述代码能正常执行,结果输出为1;因为对于函数声明语句,函数名称和函数体均提前声明了,可以在声明之前调用它。
 
  test(1);
  var test = function(x){
    console.log(x);
  }
  上述代码不能正常执行,会报错。
  因为对于函数定义表达式,只有函数变量声明提前了,但是函数的初始化代码仍然在原来的位置,也即相当于如下的代码
  var test; //函数变量声明提前
  test(1);
  var test = function(x){
    console.log(x);
  }
  因此,会报错test不是一个函数的错误。
绝梦幻厐
2015-08-30 · TA获得超过167个赞
知道答主
回答量:115
采纳率:100%
帮助的人:58.2万
展开全部
如for..in不会枚举出toString,isPrototypeOf,valueOf之类的内置属性,它们是不可枚举的。
如果重写它们(就像函数一样),不同的浏览器(IE)结果就会有分歧,需要IS_DONTENUM_BUGGY进行标识。
所以函数表达式大部分时候,至少在这里,还是很有用的。
使用函数表达式的好处是:
1、避免新增或覆盖全局变量
2、动态求值
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式