一、? 與 !! 的比較
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...