javascript中函数定义通常有两种方法:

1. 普通的函数定义:

function f1 (){}

  2. 变量式函数定义:

var f2 = function(){}

还有一种定义方法是new Function,由于这种方法并不常用,这里就不做解释了。

那这两种定义方法有什么不同呢?难道仅仅只是样子不同而已嘛?当然不是这样,我们来看个具体的例子吧,大家觉得以下代码的执行结果是什么?

if (1 === 1) {  tellAlert();} else{function tellAlert(){    alert('hello');  }}

执行结果是:会提示“hello”
     那接下来这段代码呢?

if (1 === 1) {  tellAlert();} else{var tellAlert = function (){    alert('hello');  }}

执行结果是:游览器不会提示“hello”,chrome中的控制台还会报错:

从上例中,我们可以明显看出,两者很大的不同就是执行顺序不同,这是function语句在解析时会发生被提升的情况。也就是说不管function被放置在哪里,它都会被移动到被定义时所在作用域的顶层。这样的后果就是放宽了函数必须先声明后使用的要求。

《javascript语言精粹》中推荐使用的方法是 var f1 = function()。这样能明确表示f1 是一个包含一个函数值的变量。

而nodejs的源码中,定义函数的方法是function f1()。

个人感觉,在控制自己的代码逻辑的基础上,直接用function f1()会更好点,代码会更清楚点。

·

转载于:https://www.cnblogs.com/lengyuhong/archive/2012/02/29/2370687.html

javascript的函数定义的区别相关推荐

  1. JavaScript中函数和方法区别

    相对于其他的编程语言,JavaScript可能是一个奇行种.其中我觉得最有必要提到的是JS中函数与方法的差异. 早期的JS中并没有真正意义上的方法的概念,所谓的方法只是用JS通过this对上下文做出特 ...

  2. 高级JavaScript Day03 | 函数定义和调用、this、严格模式、高阶函数、闭包、递归

    1.函数的定义和调用 1.1 函数的定义方式 1.函数的声明方式 function关键字 (命名函数) // 1. 自定义函数(命名函数)function fn() {}; 2.函数表达式 (匿名函数 ...

  3. JavaScript中函数的三种定义方法

    JavaScript中函数定义的三种方法. 函数的三种定义方法分别是:函数定义语句.函数直接量表达式和Function()构造函数的方法.下面依次介绍这几种方法具体怎么实现. 1. 函数定义语句 // ...

  4. matlab调用sh函数,Shell 函数定义与调用

    linux shell 可以用户定义函数,然后在 shell 脚本中可以随便调用. 以一个计算两数之和的函数为例: #! /bin/bash # 函数定义 sum(){ return $(($1+$2 ...

  5. JavaScript:函数

    定义函数: function f(x) {//函数体 } 如果没有return语句,函数返回undefined. JavaScript的函数也是一个对象,实际上是一个函数对象,而函数名f可以视为指向该 ...

  6. linux 变量函数返回值,linux shell 自定义函数(定义、返回值、变量作用域)介绍...

    linux shell 可以用户定义函数,然后在shell脚本中可以随便调用.下面说说它的定义方法,以及调用需要注意那些事项. 一.定义shell函数(define function) 语法: [ f ...

  7. html使用parseInt函数,JavaScript parseInt() 函数

    JavaScript parseInt() 函数 JavaScript 全局函数 定义和用法 parseInt() 函数可解析一个字符串,并返回一个整数. 当参数 radix 的值为 0,或没有设置该 ...

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

    通常我们会看到以下两种定义函数的方式: // 函数语句 function fn(str) {console.log(str); }; // 表达式定义 var fnx=function(str) {c ...

  9. Javascript 函数声明和函数表达式的区别

    2019独角兽企业重金招聘Python工程师标准>>> Javascript Function无处不在,而且功能强大!通过Javascript函数可以让JS具有面向对象的一些特征,实 ...

最新文章

  1. 全面分析Web应用程序安全漏洞——《黑客攻防技术宝典:web实战篇》
  2. iPhone开发中现文件的增加 删除和查询
  3. finalshell连接超时怎么解决_电脑无线网络连接不上怎么回事 电脑连不上无线网络的解决方法...
  4. xfce4自己使用的主题设置备份以及xfce4默认的壁纸路径
  5. 游戏开发-cocos creator技巧-cc.Component.EventHandler自定义click事件
  6. 高温保护_【美的空调维修案例】P2压缩机高温保护 不定时出现P1过欠压保护...
  7. (40)Xilinx PLL IP核配置(一)(第8天)
  8. 通过例子理解 k8s 架构 - 每天5分钟玩转 Docker 容器技术(122)
  9. matlab内存管理工具,[转载]MATLAB内存管理
  10. 关于property grid下拉框的定制
  11. formData上传音乐文件
  12. oracle导出数据只能9999,批量快速的导入导出Oracle的数据
  13. zebradesginer zpl代码_ZebraDesigner Pro 斑马打印机命令 解读
  14. 电容(3)——晶振电路的电容选择
  15. 如何制作朋友圈搞笑证件图片(附源码实例)
  16. 没有标准答案的GIS问题
  17. 外汇天眼:英国研究人员与南非合作应对气候变化
  18. onedrive的多电脑同步妙用
  19. 【推荐】2022年公用事业行业研究报告产业发展前景市场投资行情分析白皮书(附件中为网盘地址,报告持续更新)
  20. Java进阶4-Elasticsearch

热门文章

  1. vs2019键盘钩子_C#键盘按键监视
  2. java 定义一个未知长度数组
  3. 010_AOPXml方式开发
  4. android中getLocationInWindow 和 getLocationOnScreen的区别
  5. git本地ben远程分支_git 本地分支与远程分支
  6. python 高并发 select socket_python – 使用select处理多个请求
  7. C++手册_迅为干货 | C程序调用shell
  8. 服务器 操作系统安装到sd卡,DELL服务器通过sd卡安装系统(iDRAC Use vFlash ).doc
  9. linux给所有主机发送公钥,发送公钥到多台远程主机
  10. java标志清理_JVM内存管理之GC算法精解(五分钟让你彻底明白标记/清除算法)...