let和 的區別

2021-08-17 21:53:10 字數 747 閱讀 2959

一、? 與 !! 的比較
vala:

string

="aa"

/** a是非空型別,下面的給a賦值為null將會編譯不通過

* */

// a = null

a.length

/** ?宣告是可空型別,可以賦值為null

* */

varb:

string? =

"bb"

b =null

/** b是可空型別,直接訪問可空型別將編譯不通過,需要通過?.或者!!.來訪問

* */

// b.length

b?.length

b!!.length

對於乙個可空型別:通過?宣告,在訪問該型別的時候直接訪問不能編譯通過,需要通過?.或者!!.

* */

valuser

= user()

user!!

.name!!

.subsequence(0,5)!!

.length

* 通過let語句,在?.let之後,如果為空不會有任何操作,只有在非空的時候才會執行let之後的操作

* */

user?.let

* elvis操作符 ?: 簡化對空值的處理

*/fun

testelvis2(input

:string?, user

: user?)

let和const的區別

let和const的區別 let與const都是只在宣告所在的塊級作用域內有效 let用來定義變數,無論是不是嚴格模式下,宣告未初始化的時候,都不會報錯,和var作用一樣,返回undefined const用來定義常量,而且宣告時必須初始化,否則報錯 const不能修改定義的常量的值 但是可以修改常...

let和const的區別

let與const都是只在宣告所在的塊級作用域內有效。let宣告的變數可以改變,值和型別都可以改變,沒有限制。const宣告的變數不得改變值,這意味著,const一旦宣告變數,就必須立即初始化,不能留到以後賦值。const a 報錯,一旦宣告變數,應該立即賦值!const b 2 b 3 報錯,因為...

let 和 var 的區別

1 作用域只侷限於當前 塊 if true console.log str console.log str1 str1 is not defined2 let宣告的作用於不會被提公升 console.log str var str 1 console.log str1 str1 is not def...