Day 1 - JavaScript 的变数与基本资料型态

废话不多说~直接进入正题/images/emoticon/emoticon12.gif
变数(Variable)

变数就像一个箱子,拿来装资料,且所有变数都只能出现一次,不可取一样名字,也不可重复宣告。
在程序语言中的 = ,是赋予值的意思,将等号右边的值放入左边,例如:

let num = 2;
console.log(num); // 2

表示将 2 赋予给 num 这个变数,则 num = 2。

基本资料型态(Primitive Data Types)

在 JavaScript 中最基本的资料储存方式有 7 种,包括 Number、BigInt、String、Boolean、Undefined、Null、Symbol,其他的资料型态都是由这几种组合而成,只要是这几个以外的资料型态,都不是 JavaScript 原始的,例如:Array、Object...等,而 Array、Function 又属於 Object(这边先不多说,之後的文章会来深入探讨 Object)。

  1. Number

数字,且介於 -(2**53 -1) ~ 2**53 -1 之间,用来建立物件的数值,也可以用来转换型别,并且包含许多方法,例如:toFixed()toString() 等。
Number 除了能代表浮点数以外,还有三个 symbolic value:+Infinity(正无限大)、-Infinity(负无限大)、NaN(Not A Number)。

  • toString() 为数字转字串的方法,这个方法只能在 Number 用。
let age = 25;
console.log(age+10); // 35
console.log(age.toString()+10); // 2510
  • toFixed() 为设定小数点要几位数。
let pi = 3.141592;
console.log(pi.toFixed(5)) // 3.14159
console.log(pi.toFixed(2)) // 3.14
  • Number.isNaN() 可以用来判断传入的值是否为 NaN,如果参数没办法被转换成数字,会回传 NaN,例如:输入的内容是 String 时就无法转换为 Number,结果会显示 NaN。
let example = "a" + 3;
console.log(typeof example); // string
isNaN(example); // true

补充:
NaN 的资料型别是 Number
Infinity 的资料型别也是 Number

console.log(Infinity/Infinity); // NaN
console.log(Infinity/0); // Infinity
console.log(0/0); // NaN

在微积分里不定形有 6 种,如果在 JavaScript 里就会得到 NaN
就是因为 NaN 包含太多种不定形的可能性,用 NaN 去确认他们的值的话永远不会相等,所以不能用数值去和 NaN 比较,且 NaN 永远都不会等於 NaN,因此我们想确认一个值是不是 NaN 时只能用 isNaN() 这个方法

let result = 0/0;
console.log(result); // NaN
console.log(result == NaN); // false
console.log(result === NaN); // false

不管用什麽来跟 isNaN() 比较,都会 return false

let result = 0/0;
console.log(isNaN(result)); // true

所以只能在 isNaN() 里面放入要比较的东西

  1. BigInt

大於 2**53 -1整数,使用方式为在後面加一个 n,或是利用 BigInt() 将 Number 转为 BigInt。

console.log(BigInt(123) === 123n); // true
console.log(typeof 123); // number
console.log(typeof 123n); // bigint
  1. String

字串,放在双引号 "" 或单引号 ' ' 里面,String 有许多方法及属性。

  • toLowerCase() :把字串全部换成小写;toUpperCase():把字串全部换成大写。
let name = "Mary";
console.log(name.toLowerCase()); // mary
let name = "john";
console.log(name.toUpperCase()); // JOHN
  • split():分割
    切割空白
let sentence = "I am rich";
console.log(sentence.split(" "));
//["I","am","rich"]

无切割空白

let sentence = "I am rich";
console.log(sentence.split(""));
// ["I","a","m","r","i","c","h"]
  • indexOf() 找某个元素的索引值
let name = "MongoDB";
console.log(name.indexOf('D')) // 5

也可以找某个元素的片段的索引值,结果会显示那个片段开始的索引位置

let name = "MangoDataBase";
console.log(name.indexOf('Data')) // 5
// 意思为 Data 这个片段从索引位置 5 的地方开始

如果寻找的东西字串里根本没有,则会出现索引位置为 -1。

let name = "Mary";
console.log(name.indexOf("m")); // -1
// 因为 name 里根本没有小写的 m
  1. Boolean

布林值,用来判断 true(真)或 false(伪)。

console.log(10 > 9); // true
console.log(3 < 1); // false

补充:
除了下列几种是 Falsy Values,其他都是 Truthy Values,负数也是 Truthy Value!

  • false
  • 0
  • -0
  • “ ”
  • null
  • undefined
  • NaN
  • 0n
  1. Undefined

表示未被定义,例如一个变数宣告了却没有赋予值给它,则会出现 undefined。

let x;
console.log(x); // undefined
  1. Null

被定义没有任何东西(空值),要特别注意的是 null 的 type 是 object。

let x = null;
console.log(x); // null
console.log(typeof x); // object
  1. Symbol

Symbol 为一个 function,可以用来创建独一无二的值。

let x = Symbol();
console.log(typeof x); // symbol

参考资料:
MDN - JavaScript data types and data structures


<<:  多媒体电脑风潮从未结束

>>:  Day 2 - CSS + JS Clock

[day13] 设定gunicorn Logging

使用gunicorn作为HTTP Server的时候,必须手动指派gunicorn的logger作为...

5 开始把结构写成程序吧!

昨天我们使用这两个 struct 来代表整个游戏的状态,那我们今天就实际的来定义他们 在开始之前 在...

【DAY 23】制作属於你的第一个应用程序 - Microsoft Power Apps

哈罗大家好~ 自从智慧型手机崛起之後,随着应用程序枝开叶散,我们的生活越来越离不开行动装置,甚至也逐...

第 57 天 - 才知道 && 用法

今天才知道用 && 也可以串接,并且左边的命令失败,右边的命令将不会运行 test@...

(Medium) 31. Next Permutation

Implement next permutation, which rearranges numbe...