亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么這個是暫時性死區呢?

為什么這個是暫時性死區呢?

Smart貓小萌 2019-02-12 17:16:08
function foo (x = y, y = 2) {    return [x, y]}foo() // 報錯這里變量y沒有聲明, 但是應該是變量未聲明報錯啊, 怎么會是暫時性死區的原因呢?未聲明報錯和暫時性死區的明確區別就是,暫時性死區使用了let或const命令, 并且是在塊級作用域中,這樣理解對嗎?暫時性死區ES6 明確規定, 如果塊級作用域中存在let和const命令, 則這個區塊中對這些命令聲明的變量從一開始就形成封閉作用域,let命令聲明變量之前, 該變量都是不可用的, 這在語法上稱為暫時性死區看到了一個一樣的問題https://segmentfault.com/q/10...但是babel轉換過后的js代碼也沒有使用let呀
查看完整描述

1 回答

?
函數式編程

TA貢獻1807條經驗 獲得超9個贊

意思就是函數參數也是使用let聲明的,你沒有傳參,函數使用了參數的默認值,將y賦值給x,但是y還沒定義,所以不能使用,所以出現暫時性死區。

let x=y;
let y=2;

上面也不全對哈,只能當作暫時性死區理解,具體可以看ES6入門函數默認參數那一部分

看MDN文檔,MDN文檔對此進行了規定:

“事先定義的參數(左側)可用于以后的默認參數”

Parameters defined beforehand (to the left) are available to later default parameters


查看完整回答
反對 回復 2019-02-22
  • 1 回答
  • 0 關注
  • 515 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號