typeScrit(3)-函式中變數的作用域
阿新 • • 發佈:2018-11-03
例一:(:void 是方法無返回型別時宣告的空型別 )
function zhengXing():void{
var yangzi = '劉德華'
console.log(yangzi)
}
zhengXing()
console.log(yangzi)
正常輸出
劉德華
劉德華
例二:
var yangzi = '劉德華'
function zhengXing():void{
console.log('整形成'+yangzi+'的樣子')
}
zhengXing()
console.log(yangzi)
正常輸出
整形成劉德華的樣子 整形成劉德華的樣子
例三:
當局部變數與全域性變數重名的時候,在函式體內是區域性變數起作用;如果重名,就有變數提升(覆蓋),這是一個坑
var yangzi:string = '劉德華'
function zhengXing():void{
console.log('整形成了'+yangzi+'的樣子')
var yangzi:string = '馬德華'
console.log('整形成了'+yangzi+'的樣子')
}
zhengXing()
console.log(yangzi)
輸出
整形成undefined的樣子
整形成馬德華的樣子
劉德華
例四:
在早期javascript的變數作用域只有全域性和區域性,並且是以函式劃分的,但在其他語言中,作用域的劃分是以一對大括號作為界限的。
所以,JavaScript就遭到了無數開發者的吐槽,甚至說javascript不適合開發大型語言,容易記憶體溢位。JavaScript團隊意識到了這一點,在ES6中推出了let關鍵字。
使用let關鍵字的變數就是一個塊級作用域變數。希望大家在實際工作中多使用let來宣告你的變數,讓你的程式更有條例。 來看一端程式:
function zx():void{ var yz:string = "劉德華" { let yz2:string = '小瀋陽' console.log("整形成"+yz2) } console.log("整形成"+yz) console.log("整形成"+yz2) //這裡提示報錯,但依然執行了 } zx()
輸出
整形成小瀋陽
整形成劉德華
整形成小瀋陽