控制臺報(bào)錯(cuò):Cannot?access?'xxx'?before?initialization解決方法
報(bào)錯(cuò)信息
示例:
示例代碼:
// constants.js 文件: export const ATTRIBUTION_FORM = { partition_type: '', data_resource_id: '', query_dates: [ { date_dim: null, date_type: 'day', date_range: 1, }, ], filters: [ { logic: 'and', wheres: [], }, ], };
// create-crowd.js 文件: import { ATTRIBUTION_FORM } from '@/commons/constants'; console.log(ATTRIBUTION_FORM) // 報(bào)錯(cuò)
解決方法
ES6:當(dāng)程序的控制流程在新的作用域(module function 或 block作用域)進(jìn)行實(shí)例化時(shí),在此作用域中用let/const聲明的變量會(huì)先在作用域中被創(chuàng)建出來,但因此時(shí)還未進(jìn)行詞法綁定,所以是不能被訪問的,如果訪問就會(huì)拋出錯(cuò)誤。因此,在這運(yùn)行流程進(jìn)入作用域創(chuàng)建變量,到變量可以被訪問之間的這一段時(shí)間,就稱之為暫時(shí)死區(qū)。
錯(cuò)誤原因:
1. 在塊作用域內(nèi),let 和 const 聲明的變量被提升,但變量只是創(chuàng)建被提升,初始化并沒有被提升。
2. 在初始化之前使用變量,就會(huì)形成一個(gè)暫時(shí)性死區(qū)。
3. 即 let/const 聲明的變量在未出現(xiàn)聲明變量的那一行代碼之前沒有進(jìn)行詞法綁定,無法被訪問。
方法背景:
1. 我們知道,let/const作用域?yàn)閴K級作用域,變量不會(huì)提升;
2. 而var的作用域?yàn)槿肿饔糜?,可以進(jìn)行變量提升,這也就是為什么var沒有暫時(shí)性死區(qū)。
于是這里就可以使用 var 替代 const 去解決這個(gè)報(bào)錯(cuò),作為一種臨時(shí)方案。
// constants.js 文件: export var ATTRIBUTION_FORM = { partition_type: '', data_resource_id: '', query_dates: [ { date_dim: null, date_type: 'day', date_range: 1, }, ], filters: [ { logic: 'and', wheres: [], }, ], };
總結(jié)
到此這篇關(guān)于控制臺報(bào)錯(cuò):Cannot access 'xxx' before initialization解決方法的文章就介紹到這了,更多相關(guān)控制臺報(bào)錯(cuò)Cannot access xxx before initialization內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 控制臺報(bào)錯(cuò)object is not a function的解決方法
- 解決JS請求路徑控制臺報(bào)錯(cuò)?Failed?to?launch'xxx'?because?the?scheme?does?not?have?a?registered?handler的問題
- 瀏覽器控制臺報(bào)錯(cuò)Failed to load module script:解決方法
- js控制臺報(bào)錯(cuò)Uncaught TypeError: Cannot read properties of undefined (reading ‘a(chǎn)ppendChild‘)的解決
相關(guān)文章
詳解JavaScript Promise和Async/Await
這篇文章主要介紹了JavaScript Promise和Async/Await,對異步編程感興趣的同學(xué),可以參考下2021-04-048種現(xiàn)代JavaScript響應(yīng)式模式小結(jié)
響應(yīng)式的本質(zhì)是關(guān)于系統(tǒng)如何對數(shù)據(jù)變化做出反應(yīng),并且存在不同類型的響應(yīng)式,本文就來介紹8種現(xiàn)代JavaScript響應(yīng)式模式小結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02JavaScript中使用Object.create()創(chuàng)建對象介紹
這篇文章主要介紹了JavaScript中使用Object.create()創(chuàng)建對象介紹,本文先是講解了語法,然后給出了創(chuàng)建實(shí)例,需要的朋友可以參考下2014-12-12javascript面向?qū)ο笕筇卣髦鄳B(tài)實(shí)例詳解
這篇文章主要介紹了javascript面向?qū)ο笕筇卣髦鄳B(tài),結(jié)合實(shí)例形式詳細(xì)分析了javascript面向?qū)ο蟪绦蛟O(shè)計(jì)中多態(tài)的概念、原理,并結(jié)合實(shí)例形式總結(jié)了多態(tài)的實(shí)現(xiàn)方法與使用技巧,需要的朋友可以參考下2019-07-07js+html5實(shí)現(xiàn)手機(jī)九宮格密碼解鎖功能
這篇文章主要為大家詳細(xì)介紹了js+html5實(shí)現(xiàn)手機(jī)九宮格密碼解鎖功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07js 調(diào)用本地exe的例子(支持IE內(nèi)核的瀏覽器)
js 調(diào)用本地exe程序.我實(shí)驗(yàn)了一下 : 使用IE內(nèi)核的瀏覽器 都支持 火狐好像不行,感興趣的碰可以研究下2012-12-12