let初始化思考

2021-09-19 17:27:50 字數 657 閱讀 9894

直接寫let x=x會報以下錯誤

uncaught referenceerror: x is not defined

此句分為兩步,

1、申明變數let x

2、賦值變數 x=x; 此時記憶體中建立x變數,但是並未為其分配空間,所以再賦值時,並不能找到有效引用

在這之後,如果再次嘗試初始化lex x=1,依然會報錯

uncaught syntaxerror: identifier 'x' has already been declared

由此可見,此時x已經被申明,該變數名已被占用,再次申明會報錯,那麼此時是否可引用x賦值呢?

嘗試x=1,發現依然報錯

uncaught referenceerror: x is not defined

報x沒有define,

可以猜想 let x = 1;首先是申明識別符號 x,在申明之前,會在當前作用域內檢索,是否已經使用過該識別符號,如果沒有,則申明新的識別符號。然後為x初始化值,開闢記憶體空間,如果此步失敗,則x無有效的記憶體引用位址,無法通過x去訪問。同時,由於x已被占用,在當前作用域內,再次嘗試申請x識別符號是失敗的。

初始化 指定初始化

id alloc 物件的誕生過程,主要是從作業系統獲得一塊足夠大的記憶體,以存放該類的全部例項變數,並將其指定為存放記憶體物件的實力變數的位置。alloc方法同時將這塊記憶體全部設定為0。結果是 bool變數初始化為no,所有的int型別變數為0,float變數為0.0,所有的指標為nil.obje...

初始化 1 預設初始化 列表初始化

初始化的基本概念 事實 初始化和賦值是兩個完全不同的操作。初始化,是建立變數時賦予其乙個初始值。賦值,是把物件的當前值擦除,用乙個新值代替。列表初始化 p39 作為c 11新標準的一部分,用花括號 來初始化變數得到了全面應用。出於某些原因,這種初始化的方式叫做列表初始化。現在,無論是初始化物件還是某...

初始化 MyBatis初始化之載入初始化

在mybatis初始化過程中,大致會有以下幾個步驟 1.建立configuration全域性配置物件,會往typealiasregistry別名註冊中心新增mybatis需要用到的相關類,並設定預設的語言驅動類為xmllanguagedriver 3.構建defaultsqlsessionfacto...