函數(shù)與作用域

1,函數(shù)聲明和函數(shù)表達(dá)式有什么區(qū)別

函數(shù)聲明的方式:調(diào)用放在聲明的前后都可以
函數(shù)表達(dá)式的方式:調(diào)用函數(shù)必須在函數(shù)表達(dá)式后面


圖片.png
圖片.png

2,什么是變量的聲明前置?什么是函數(shù)的聲明前置 ?

在執(zhí)行代碼之前,首先聲明同一個(gè)作用域的變量和函數(shù),然后再一句一句的執(zhí)行代碼

3,arguments是什么?

保存?zhèn)魅牒瘮?shù)的參數(shù) 數(shù)組 它是一個(gè)類數(shù)組的名字

4,函數(shù)的“重載”怎么實(shí)現(xiàn)?

不設(shè)置形參,沒有規(guī)定傳入?yún)?shù)的個(gè)數(shù)和類型

圖片.png
圖片.png

5,立即執(zhí)行函數(shù)表達(dá)式是什么?有什么作用

立即執(zhí)行函數(shù)表達(dá)式是什么?

有些時(shí)候需要在函數(shù)聲明后就立即使用該函數(shù),我們一般使用()例如 fn()來調(diào)用fn函數(shù)
那么function(){}()是不是就達(dá)到了聲明函數(shù)的同時(shí)就執(zhí)行函數(shù)了呢?結(jié)果:報(bào)錯(cuò)
為什么報(bào)錯(cuò)呢?
因?yàn)閒unction(){}是一條語句
當(dāng)然遇到function也可以看做是一個(gè)表達(dá)式 var a=function(){}
function后面才是表達(dá)式
由于()前面是不能跟一條語句的 所以function(){}()才會(huì)報(bào)錯(cuò)
要怎么解決這個(gè)問題呢?
不要讓function開頭
那么就有下面7種寫法:
(function(){}())
(function(){})()
! function(){}()
+function(){}()
-function(){}()
~ function(){}()
new function(){}()
通常情況下只對匿名函數(shù)使用立即執(zhí)行函數(shù)

有什么作用?

作用一:可以不必為函數(shù)起名字,避免了污染全局變量
作用二:立即執(zhí)行函數(shù)表達(dá)式形成了一個(gè)獨(dú)立的作用于,封裝的變量私有化

6,求n!,用遞歸來實(shí)現(xiàn)

圖片.png

7,以下代碼輸出什么?

圖片.png

輸出結(jié)果:
name:饑人谷
age:2
sex:男
["饑人谷",2,"男"]
name valley

name:小谷
age:3
sex:undefined
["小谷",3]
name valley

name:男
age:undefined
sex:undefined
["男"]
name valley

8,寫一個(gè)函數(shù),返回參數(shù)的平方和?

圖片.png

代碼:

圖片.png

執(zhí)行結(jié)果:

圖片.png

9,如下代碼的輸出?為什么

圖片.png

輸出:
undefined
報(bào)錯(cuò):b沒有定義

第一個(gè)結(jié)果undefined:同一個(gè)作用域的變量聲明前置,但是使用a在前,賦值a在后,所以輸出a時(shí)沒給a賦值 輸出undefined
第二個(gè)結(jié)果報(bào)錯(cuò):沒有聲明b變量
綜上所訴:聲明前置

10,如下代碼的輸出?為什么

圖片.png

輸出:
hello world
報(bào)錯(cuò)

原因:函數(shù)可以先使用后聲明,因?yàn)楹瘮?shù)前置,
函數(shù)表達(dá)式是一個(gè)表達(dá)式,要先聲明賦值再使用

11, 如下代碼輸出什么? 寫出作用域鏈查找過程偽代碼

圖片.png

輸出:
10

原因:
函數(shù)的作用域在它聲明的時(shí)候就決定了
作用域鏈查找過程偽代碼:

圖片.png

12, 如下代碼輸出什么? 寫出作用域鏈查找過程偽代碼

圖片.png

輸出結(jié)果:
30

作用域鏈的查找過程偽代碼:

圖片.png

13,以下代碼輸出什么? 寫出作用域鏈的查找過程偽代碼

圖片.png

輸出:
30

作用域鏈的查找過程偽代碼

圖片.png

14,以下代碼輸出什么? 寫出作用域鏈查找過程偽代碼

圖片.png

輸出結(jié)果:
undefined
5
1
6
20
200

作用域鏈查找過程偽代碼:

圖片.png
圖片.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 函數(shù)聲明和函數(shù)表達(dá)式有什么區(qū)別 函數(shù)聲明語法:function functionName(arg0,arg1,ar...
    _Dot912閱讀 659評(píng)論 0 3
  • 1.函數(shù)聲明和函數(shù)表達(dá)式有什么區(qū)別 函數(shù)就是一段可以反復(fù)調(diào)用的代碼塊。函數(shù)還能接受輸入的參數(shù),不同的參數(shù)會(huì)返回不同...
    徐國軍_plus閱讀 529評(píng)論 0 0
  • 1. 函數(shù)聲明和函數(shù)表達(dá)式有什么區(qū)別 使用function關(guān)鍵字聲明一個(gè)函數(shù)時(shí),聲明不必放到調(diào)用的前面。//函數(shù)聲...
    _李祺閱讀 329評(píng)論 0 0
  • 1. 函數(shù)聲明和函數(shù)表達(dá)式有什么區(qū)別 函數(shù)聲明和函數(shù)表達(dá)式都是聲明函數(shù)的方式 區(qū)別1 寫法:函數(shù)聲明 : fu...
    怎么昵稱閱讀 295評(píng)論 0 0
  • 這一碗次次都吃到見底的苦瓜麵, 最大的功臣是菜攤的老闆。 老闆滷苦瓜的技術(shù)一流, 有一次我撲空多回任不住問老闆: ...
    品思陳資璧Phoebe閱讀 165評(píng)論 0 0

友情鏈接更多精彩內(nèi)容