javascript - Js 函数声明和函数表达式
世界只因有你
世界只因有你 2017-07-05 10:55:27
0
4
891

`alert(sum(10,10));
var sum=function(num1,num2){

   return num1+num2;

};`
为什么报错,不是有变量提升吗

世界只因有你
世界只因有你

全部回复(4)
phpcn_u1582

在我们写js code 的时候,我们有2中写法,一种是函数表达式,另外一种是函数声明方式。
我们需要重点注意的是:

只有函数声明形式才能被提升。

1、函数声明形式 【成功】

function myTest(){ 
    foo(); 
    function foo(){ 
        alert("我来自 foo"); 
    } 
} 
myTest();

2、函数表达式方式【失败】

function myTest(){ 
    foo(); 
    var foo =function foo(){     // 看这里
        alert("我来自 foo"); 
    } 
} 
myTest();

看我这篇: http://www.jianshu.com/p/85a2...

扔个三星炸死你

函数表达式不会提升。

看一遍《javascript高级程序设计》吧。

phpcn_u1582

声明和表达式是不一样的,声明的话不光定义会提前,赋值也会提前赋好,而表达式不会,举个栗子:

a();
function a(){}; //等同于
var a = function(){};
a();
///////对于表达式有
a();
var a = function(){}; //等同于
var a;
a();
a = function(){}; //简单来讲就是表达式的赋值必须要等程序运行到相关行的时候才会进行
ringa_lee

同楼上,你的函数创建方式是函数字面量形式,改成

alert(sum(10,10));
function sum(num1,num2){
    return num1+num2;
}

就行了

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板