博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
函数声明和函数表达式
阅读量:4520 次
发布时间:2019-06-08

本文共 809 字,大约阅读时间需要 2 分钟。

一.函数声明

函数名实际上也是一个指向函数对象的指针。(函数名本身就是变量,可以像传递参数一样传递给另一个函数)

function sum(){.....}

二.函数表达式

变量sum也是一个指向函数对象的指针。需要在语句后加上“;”分号

var sum = function(){......};

三.两者区别

函数声明:解析器会率先读取函数声明,并使其在执行任何代码之前可用。

函数表达式:提升的是变量sum,代码部分必须等到解析器执行到它所在的代码行,才会真正被解释执行。

四.函数的重复声明

1.如果同一个函数被多次声明,后一个声明会覆盖前一个声明,并且由于函数名的提升,所有调用该函数的地方都采用后一个声明的函数。

function f(){    console.log(1);}f();//10//由于函数声明会导致函数提升,所以后者覆盖前者,并应用于所有的调用中function f(){    console.log(10);}f();//10

2.如果同时采用function命令和赋值语句声明同一个函数,最后总是采用赋值语句的定义。

var f = function() {  console.log('1');}function f() {  console.log('2');}f() // 1

 六.不能在条件语句中声明函数

if和try语句没有作用域,其中声明的函数由于变量提升原因,其条件可能是无效的。这是非常容易出错的地方。只有函数才有相当于块级作用域的概念。

要达到在条件语句中定义函数的目的,必须使用函数表达式

if (false) {  var f = function () {};}f() // undefined

提升的是var ,但是其函数的定义在条件判断之后才有效

转载于:https://www.cnblogs.com/krystalcl/p/6985959.html

你可能感兴趣的文章
学习笔记3
查看>>
LeetCode 20. Valid Parentheses
查看>>
LeetCode 4 Keys Keyboard
查看>>
bean找不到异常
查看>>
重拾Javascript基础(三) - DOM属性&方法
查看>>
电感在电路中的作用(硬件01)
查看>>
ng 动态的生成option。
查看>>
ORACLE-12C-RAC INSTALL
查看>>
LintCode-Topological Sorting
查看>>
自定义引用类型的Enumerable.Union调用(原创)
查看>>
Keil c中自定义带可变参数的printf函数
查看>>
抽象类实例
查看>>
react context prop-types
查看>>
Java之路——Java初接触
查看>>
2018.12.27学习JavaScript
查看>>
Cocoa编程开发者手册
查看>>
C++框架_之Qt的开始部分_概述_安装_创建项目_快捷键等一系列注意细节
查看>>
html5基础学习
查看>>
理工之 A+B Problem III
查看>>
SalesForce自定义按钮(javascript执行),点击按钮更新Filed
查看>>