js中函数声明与函数表达式
作者:hebedich 发布时间:2024-04-25 13:08:35
标签:函数声明,函数表达式
目前为止,我们一直没有对函数声明和函数表达式加以区别。而实际上,解析器在向执行环境中加载数据时,对函数声明和函数表达式并非一视同仁。解析器会率先读取函数声明,并使其在执行任何代码之前可用(可以访问);至于函数表达式,则必须等到解析器执行到它所在的代码行,才会真正被解释执行。如下例子:
alert(sum(10,10));
function sum(num1,num2)
{
return num1+num2;
}
以上代码完全可以正确执行,因为在代码开始执行之前,解析器就已经通过一个名为函数声明提升(function declaration hoisting)的过程,读取并将函数声明添加到执行环境中。对代码求值时,JavaScript引擎在第一遍会声明函数并将它们放到源代码树的顶部。所以,即使声明函数的代码在调用它的代码后面,JavaScript引擎也能把函数声明提升到顶部。如果像下面的例子所示,把上面的函数声明改为等价的函数表达式,就会在执行的时候出现错误。
alert(sum(10,10));
var sum=function(num1,num2)
{
return num1+num2;
};
以上代码会在运行的时候出现错误,原因在于函数位于一个初始化语句中,而不是一个函数声明。换句话讲,在执行到函数所在的语句之前,变量sum中不会保存有对函数的引用;而且,由于第一行代码就会导致“unexpected identifier”(意外标识符)错误,实际上也不会执行到下一行。
除了声明时候可以通过变量访问函数这一点区别之外,函数声明与函数表达式的语法其实是等价的。
注:也可以同时调用函数声明和函数表达式,例如 var sum=function sum(){}。不过,这种语法在Safari中会导致错误。
以上所述就是本文的全部内容了,希望对大家学习javascript能够有所帮助。
0
投稿
猜你喜欢
- pytorch中的权值初始化官方论坛对weight-initilzation的讨论torch.nn.Module.apply(fn)torc
- 区别call、apply、bind相同点:都是改变this的指向,传入的第一个参数都是绑定this的指向,在非严格模式中,如果第一个参数是n
- xpath表达式1. xpath语法<bookstore><book> <title lang="e
- 软件版本及平台:MySQL-5.7.17-winx64,win7家庭版一、下载安装包https://cdn.mysql.com//Downl
- 对于日志的处理,有时候需要把符合条件的日志计入数据库中一、添加pom依赖 <dependency> &
- 首先,建一个文件夹,把你要隐藏的文件放在里面,你的所有黑客程序什么的。假设你建的文件夹叫hacker然后呢,我们给这个文件夹加个扩展名(后缀
- eWebEditor V2.80最终版 说明 目录结构说明 =============================
- 如何为list实现find方法string类型的话可用find方法去查找字符串位置:a_list.find('a')如果找到
- kali添加开机自启采用systemd的方法,kali默认是没有rc.local的,需要自己创建。本方法也适用于ubuntu 18.04 6
- MySQL/MariaDB/Percona数据库升级脚本MySQL/MariaDB/Percona数据库升级脚本截取《OneinStack》
- Updates(2019.8.14 19:53)吃饭前用这个方法实战了一下,吃完回来一看好像不太行:跑完一组参数之后,到跑下一组参数时好像没
- PHP屏蔽蜘蛛访问代码代码:常用搜索引擎名与 HTTP_USER_AGENT对应值百度baiduspider谷歌googlebot搜狗sog
- 前言使用 Python 的时候,我们知道 list 是一个长度可变对的数组, 可以通过 insert,append 和 extend 轻易的
- 本文实例为大家分享了微信小程序定时拍照的具体代码,供大家参考,具体内容如下在某些进行签到的场景,为了防止用户选择相册的照片或者不实时拍照,设
- FSO,正如UFO般令人激动、令人神往,当然更多的亦是让人欢喜让人忧。君不见某空间服务商广告:100MB空间只要60RMB/年,支持数据库,
- 本文实例讲述了Python二叉搜索树与双向链表实现方法。分享给大家供大家参考,具体如下:# encoding=utf8''&
- 最近在改个程序用到了在js中设置css的float属性,以为和平常的写法一样,原来不是,只好去请教google,原来...首先大家先来看一下
- 比如有一个需求,通过sql语句,返回-5至5的随机整数.如果这一个放在PHP中,则非常简单直接用print rand(-5,5);?>
- 本文实例为大家分享了基于wxPython的GUI实现输入对话框的具体代码,供大家参考,具体内容如下编程时,免不了要输入一些参数等,这时输入对
- 本文实例讲述了jQuery实现的简单分页。分享给大家供大家参考,具体如下:<!DOCTYPE html PUBLIC "-/