源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

javascript 用函数语句和表达式定义函数的区别详解

  • 时间:2020-05-26 18:59 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:javascript 用函数语句和表达式定义函数的区别详解
使用javascript多年,写过无数函数,今天却才真正弄明白两种函数定义的区别,真是悲剧,写下这个随笔, 以时刻提醒自己要打好基础 , 一大把年纪了, 不能继续懵懵懂懂了。 通常我们会看到以下两种定义函数的方式:
[u]复制代码[/u] 代码如下:
// 函数语句 function fn(str) {   console.log(str); }; // 表达式定义 var fnx=function(str) {   console.log(str+ ' from fnx'); };
以前都是凭借自己手指的感觉随心所欲使用两者 -_- || ,今天看了js基础, 总算是解决了心中对他们的困惑: 两种方式都创建了新的函数对象, 但函数声明语句的函数名是一个变量名, 变量指向函数对象, 和通过var声明变量一样,函数定义语句中的函数被显示地提前到了脚本或函数的顶部, 因此它们在整个脚本和函数内都是可见的,但是使用var 表达式定义函数, 只有变量声明提前了,变量初始化代码仍然在原来的位置, 用函数语句创建的函数, 函数名称和函数体均被提前,所以我们可以在声明它之前就使用它。 [b]代码例子如下: [/b]
[u]复制代码[/u] 代码如下:
   console.log(typeof(fn)); // function     fn('abc'); // abc     console.log(typeof(fnx)); // undefined     if(fnx)         fnx('abc');  // will not execute     else         console.log('fnx is undefined'); // fnx is undefined     // 函数语句     function fn(str)     {         console.log(str);     };     // 表达式定义     var fnx=function(str)     {         console.log(str+ ' from fnx');     };
代码很简单, 希望和我之前一样没有弄明白两者区别的同学能有所收获 。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部