JavaScript 的型别主要可以分成基本型别 (Primitives)与物件型别 (Object) 两大类;所有基本型别以外的值都是物件型别。
JavaScript是一个弱型别(Weak type)、且为动态(Dynamically Type)的程序语言。即不需在变数/常数在定义时宣告型别,只需要指定它的值,JavaScript会依照所指定的值决定变数/常数的资料类型。
如下范例:
JavaScript 允许将数值与字串相加,结果变成一个字串;变数本身无需宣告型别。
var x = "JavaScript";
var y = 123;
var z = x + y;
console.log(z); //JavaScript123
补充
有人将常见的程序语言画了一张分类图:
(这里先不详细解释,之後再回头补充)
var x = 5;
var str1 = "Hello how are you?"
var student = {
firstName: "Peter",
lastName: "Huang",
id: 12345
}
typeof
来查型别,会发现结果是object
,而不是array
。若要检查是不是阵列Array的话,可以透过
Array.isArray(arr)
来确认,如下:
const Array_1 = []
const Array_2 = [1, 2, 3]
console.log(Array_1.length) //0
Array_1[0] = 6
Array_1[1] = 7
Array_1[2] = 8
Array_1[2] = 9
console.log(typeof Array_1) // object
console.log(Array.isArray(Array_1)); //true ----> Array_1为阵列
console.log(Array_1) // [6,7,9]
console.log(Array_1.length) //3
console.log(Array_1[3]) //undefined
Symbol 是 javascript ES6 新增的资料型别,用来表示独一无二的值,所以如果我们像这样定义 symbol:
let sy_1 = Symbol();
let sy_2 = Symbol();
sy_1==sy_2; //false
sy_1===sy_2; //false
Symbol 函数也可以接受一个字串参数,主要是用来区分不同的 symbol,可以用 description 取得 Symbol 的描述内容。
let sy_1 = Symbol("Peter");
let sy_2 = Symbol("Allen");
sy_1.description; //Peter
由於每个 Symbol 值都是不相等的,所以用 Symbol 来当作物件的属性名称,这样可以避免不小心因为有相同的属性名称把内容盖掉的情况发生。
比如说像我们要建立一个使用者的列表,但其中可能会有同名的人:
onst users={
"Peter": {
"height": 180,
"weight": 80
},
"Allen": {
"height": 173,
"weight": 68
},
"Peter": {
"height": 171,
"weight": 72
}
}
因为里面都有 Peter 这个 key,所以前面的 Peter 就会被覆写掉了。
这时只要改成 symbol 就好了。
const users={
[Symbol("Peter")]: {
"height": 180,
"weight": 80
},
[Symbol("Allen")]: {
"height": 173,
"weight": 68
},
[Symbol("Peter")]: {
"height": 171,
"weight": 72
}
}
参考来源:
https://eyesofkids.gitbooks.io/javascript-start-from-es6/content/part3/datatype.html
https://tools.wingzero.tw/article/sn/263
https://www.gushiciku.cn/pl/p3St/zh-tw
>>: Day 5-单元测试 3A 原则 (Arrange, Act 和 Assert) (基础-4)
昨天结束在Facebook登入之後,今天就接续昨天的内容,以木棉花的粉丝专页为例,来讲怎麽爬下来贴...
Laravel 支援信件寄送功能,可以经由各种服务发送信件,框架也预设有使用者登入时就寄送验证信的功...
客制化指令 Nightwatch 本身提供的功能虽然已经相当多了,不过或多或少都有些缺失。又或者我们...
线性回归(Linear Regression) 如果我们有数据 (x, y) ,假设 x 是年资、y...
上一篇讲了要放什麽,今天这篇讲一下不要放的东西。 Summary 这应该是有点争议的,至少我会有点想...