js 變量類型

知識點

  • 變量類型
  • 變量計算
  • 傳遞參數

變量類型

  • 基本類型 VS 引用類型
  • typeof運算符詳解

基本類型

Number/String/Boolean/undefined/null
基本類型的值在內存中佔據固定大小的空間,因此被保存在堆內存中。

var a = 100
var b = a
a = 200
console.log(b) // 200

引用類型

Object/Array/Function
引用類型是保存在內存中的對象,其指針指向同一個內存,原因是其可以無限制擴展屬性,爲了防止消耗過大內存。操作對象時實際是在操作對象的引用而不是實際的對象。

var a = {age:200}
var b = a
b = {age:100}
console.log(a.age) // 100

變量計算-強制類型轉換

  • 字符串拼接
  • ==運算符
  • if語句
  • 邏輯運算
var a = 100 + 10 // 110
var b = 100 + '10' // '10010'
// == 會將數據轉換某一基本類型
100 == '100' // true
0 == '' // true
null == undefined // true
// if會將數據轉換爲Boolean
var a = true, b = 100, c = ''
if (a) {} // true
if (b) {} // true
if (c) {} // false
console.log(10 && 0) // 0,10被轉爲了true
console.log('' || 'abc') // 'abc',''被轉爲了false
console.log(!window.abc) // true,undefined被轉爲了false

// 判斷一個變量會被當成true還是false
var a = 100
console.log(!!a)

傳遞參數

ECMAScript中所有函數的參數都是按值傳遞的,就如同複製變量。
但向函數傳遞引用類型的值時,會將其在內存中的地址複製給函數中的局部變量,因此這個局部變量的變化會反映在函數的外部,而基本類型傳參則不會反映到函數外部。

// 基本類型傳參
function addTen(num){
	num += 10
	return num
}
var count = 20
var result = addTen(count)
alert(count) // 20,沒有變化
alert(result) // 30

// 引用類型傳參
fucntion setName(obj){
	obj.name = 'David'
}
var person = new Object()
setName(person)
alert(person.name) // 'David'
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章