ES6函式擴充套件(函式引數預設值)

2021-08-31 06:59:15 字數 1222 閱讀 8812

一、函式的預設引數基本使用方法

function

test

(x,y =

"hello"

)test

("winne");

//函式引數:winne hello

test

("winne"

,"hi");

//函式引數:winne hi

如上**我們可以看出,當函式引數有了預設值可以不傳入那個引數,那麼就直接使用預設的引數。

注意:引數變數是預設宣告的,不能用let和const再次宣告:

function

f(a =1)

注意:預設值後面不能再出現沒有預設值的引數!

二、關於預設引數的作用域問題

let x =

"test"

;function

test

(x,y = x)

function

test2

(a,y = x)

test()

;//作用域問題:undefined undefined

test

("winne");

//作用域問題:winne winne

test2

("雪");

//作用域問題:雪 test

1、分析下上面的**test()為什麼x,y都是undefined呢?

主要是在函式的引數中也是對變數x進行了宣告,其實為下面寫法的簡寫,一般省略了let:

function

test

(let x,

let y = x)

此時在呼叫test()的時候什麼引數都沒有傳入,那麼函式引數那裡的宣告就是的x為undefined了,所以再賦值給y,那麼y也是undefined了。

2、分析**呼叫test2(「雪」)為什麼a = 「雪」 ,y = 「test」 ?

首先我們知道,a = "雪"是傳入的引數。那麼第二個引數y沒有傳入,在函式引數的y宣告中把x賦值給了y,但是此時x並不能在函式引數中找到有他的宣告,那麼他就會像上級(父級作用域查詢),找到了let x = 「test」 ,這時拿到了x的值就賦值了y了。

ES6 函式擴充套件(函式引數預設值)

es6 之前,不能直接為函式的引數指定預設值,只能採用變通的方法。function log x,y log hello hello world log hello china hello china log hello hello world面 檢查函式log的引數y有沒有賦值,如果沒有,則指定預設...

ES6中函式的擴充套件(函式引數預設值)

es6允許為函式的引數設定預設值,即直接寫在引數定義的後面。function log x,y world log hello hello world log hello china hello china log hello hello function point x 0,y 0 const p ...

ES6 函式預設值

1 es6之前,函式如果需要預設值,需要在函式內額外處理,如 function log x,y log hello hello world log hello es6 hello es6 log hello hello world上述 中第二行,檢查y引數是否有值,如果沒有,將其賦值為預設值 wor...