1. 程式人生 > >typeScrit(3)-函式中變數的作用域

typeScrit(3)-函式中變數的作用域

例一:(: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()

輸出

整形成小瀋陽
整形成劉德華
整形成小瀋陽