
javascript 用函数语句和表达式定义函数的区别
发布日期:2021-05-09 04:22:22
浏览次数:9
分类:博客文章
本文共 880 字,大约阅读时间需要 2 分钟。
使用javascript多年,写过无数函数,今天却才真正弄明白两种函数定义的区别,真是悲剧,写下这个随笔, 以时刻提醒自己要打好基础 , 一大把年纪了, 不能继续懵懵懂懂了。
通常我们会看到以下两种定义函数的方式:
// 函数语句function fn(str){ console.log(str);};// 表达式定义var fnx=function(str){ console.log(str+ ' from fnx');};
以前都是凭借自己手指的感觉随心所欲使用两者 -_- || ,今天看了js基础, 总算是解决了心中对他们的困惑:
两种方式都创建了新的函数对象, 但函数声明语句的函数名是一个变量名, 变量指向函数对象, 和通过var声明变量一样,函数定义语句中的函数被显示地提前到了脚本或函数的顶部, 因此它们在整个脚本和函数内都是可见的,但是使用var 表达式定义函数, 只有变量声明提前了,变量初始化代码仍然在原来的位置, 用函数语句创建的函数, 函数名称和函数体均被提前,所以我们可以在声明它之前就使用它。
代码例子如下:
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'); };
代码很简单, 希望和我之前一样没有弄明白两者区别的同学能有所收获 。
发表评论
最新留言
不错!
[***.144.177.141]2025年03月29日 14时29分28秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【故障公告】10:30-10:45 左右 docker swarm 集群节点问题引发故障
2019-03-06
Python 简明教程 --- 20,Python 类中的属性与方法
2019-03-06
QBlog V2.5 源码开放下载(ASP.NET 番外系列之开端)
2019-03-06
稀疏数组
2019-03-06
Android MediaPlayer setDataSource failed
2019-03-06
虚拟机搭建hadoop环境
2019-03-06
DataStax Bulk Loader教程(四)
2019-03-06
Hibernate入门(四)---------一级缓存
2019-03-06
[Python学习笔记]组织文件
2019-03-06
如何正确的在项目中接入微信JS-SDK
2019-03-06
快服务流量之争:如何在快服务中占领一席之地
2019-03-06
12张图打开JMeter体系结构全局视角
2019-03-06
Spring Boot 2.x基础教程:构建RESTful API与单元测试
2019-03-06
[UWP 自定义控件]了解模板化控件(1):基础知识
2019-03-06
WinUI 3 Preview 3 发布了,再一次试试它的性能
2019-03-06
使用命令把SpringBoot项目打包成可运行的jar包(简洁,操作性强)
2019-03-06
VMware vSphere 离线虚拟机安装 BIND 9
2019-03-06
dojo/request模块整体架构解析
2019-03-06
手把手教你安装Eclipse最新版本的详细教程 (非常详细,非常实用)
2019-03-06