成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術(shù)文章
文章詳情頁

javascript - Js 函數(shù)聲明和函數(shù)表達(dá)式

瀏覽:151日期:2023-03-07 11:20:45

問題描述

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

return num1+num2;

};`為什么報(bào)錯(cuò),不是有變量提升嗎

問題解答

回答1:

在我們寫js code 的時(shí)候,我們有2中寫法,一種是函數(shù)表達(dá)式,另外一種是函數(shù)聲明方式。我們需要重點(diǎn)注意的是:

只有函數(shù)聲明形式才能被提升。

1、函數(shù)聲明形式 【成功】

function myTest(){ foo(); function foo(){ alert('我來自 foo'); } } myTest();

2、函數(shù)表達(dá)式方式【失敗】

function myTest(){ foo(); var foo =function foo(){ // 看這里alert('我來自 foo'); } } myTest();

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

回答2:

函數(shù)表達(dá)式不會(huì)提升。

看一遍《javascript高級(jí)程序設(shè)計(jì)》吧。

回答3:

聲明和表達(dá)式是不一樣的,聲明的話不光定義會(huì)提前,賦值也會(huì)提前賦好,而表達(dá)式不會(huì),舉個(gè)栗子:

a();function a(){}; //等同于var a = function(){};a();///////對(duì)于表達(dá)式有a();var a = function(){}; //等同于var a;a();a = function(){}; //簡(jiǎn)單來講就是表達(dá)式的賦值必須要等程序運(yùn)行到相關(guān)行的時(shí)候才會(huì)進(jìn)行回答4:

同樓上,你的函數(shù)創(chuàng)建方式是函數(shù)字面量形式,改成

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

就行了

標(biāo)簽: JavaScript
相關(guān)文章: