# 變數

  1. 調用為宣告的變數會報錯
console.log(message);
// 提示錯誤:message is not defined
  1. 只宣告,未定義(不賦值)
var message;
console.log(message); 
// 提示錯誤:undefined
  1. 宣告變數可以不使用關鍵字 var,這只在非嚴格模式下適用;嚴格模式下會提示錯誤;
    非嚴格模式下:
    message = 100;
    console.log(message);
    // 輸出 100
    嚴格模式下:
    "use strict";
    message = 100;
    console.log(message);
    // 提示錯誤:message is not defined

# 常數

宣告常數時必須初始化。且定義後不可修改。

const message = 100;
console.log(message);

# 原始數據類型

JavaScript 只有五種基本數據類型( boolean null undefined number string )和一種複雜數據類型 Object

關於各種數據類型對布林類型的轉換關系。

數據類型轉換為 true轉換為 false
boolean 類型truefalse
string 類型任何非空字符串“”(空字符串)
number 類型任何非零數字值(包括無窮大)00.0NaN
Object 類型任何對象null
undefinedunderfined

:::note info
關於 NaN
NaN 表示不是一個數字 但是屬於 number 類型
與任何值不相等包括自身
:::

# 字符串

JavaScript 中字符串不可以改變長度。那麼當修改字符串時實際上並不是在原字符串上進行修改,而是在創建一個一個變數,賦值為修改的內容。然後銷毀原字符串。

# 包裝類型

JavaScript 語言中,原始類型與包裝類型創建的數據在使用上沒有任何差異

定義變數的兩種方式

// 直接 / 字面量 量方式定義
var bool = true;
// 構造函數方式
var Bool = new Boolean(true);

創建對象的語法格式 new 構造函數 (); 例如 var Bool = new Boolean(true); 表示創建一個值為 true 的變數 Bool

三種包裝類型分別是布林類型、數字類型、字符串類類型

var Bool = new Boolean(true);
var Num = new Number(100);
var Str = new String("this is message");

判斷包裝類型不能使用 typeof 而是使用 instanceof 。語法結構變數名 / 對象名 instanceof 構造函數 / 數據類型

console.log(Str instanceof String);

# 特殊類型

# undefined

得到 undefined 這個值的情況

  • 宣告變數但未初始化值時。
var msg;
console.log(msg);
  • 宣告並初始化值為 undefined 時。
var msg1 = undefined;
console.log(msg1);
  • 函數中的 return 語句的默認返回值。

  • 函數中的 return 語句的返回值的設置為 undefined

  • 訪問某一對象中不存在的屬性時。

# null

null 是 5 個基本類型的一個,但是得到的類型是 object 。這是 JavaScript 語言的曆史遺留問題 / 當初設計的紕漏。所以當我們判斷 null 類型時可以使用特殊方法 console.log(Object.prototype.toString.call(null));

# undefined 與 null 的關係

undefined 派生null 。他們兩個值相等但類型不等。

console.log(undefined == null); // 結果 true 說明值相等
console.log(undefined === null); // 結果 false 說明類型不等

# 類型轉換

關鍵點隱式類型轉換顯式類型轉換
JavaScript 官方規範官方未提及明確表明
執行效率 / 性能整體較優整體較弱
難易程度有些難度容易

# 隱性類型轉換

欲轉換為轉換符號說明範例
布林!!將數據轉換為布林類型,在數據前加 !! 即可!!"this is message" !!11
數字+將數據轉換為數字類型,在數據前加 + 即可+"this is message" +true
字符串""+將數據轉換為字符串類型,與空字符串相加即可 (位置無關)"" + 100 "" + true
  • 如果存在字符串的話,按照字符串的拼接操作
  • 沒有字符串,而存在數字值的話,按照算數運算操作

# 顯式類型轉換

顯示類型轉換則是利用類型的構造方法

// 轉化為 boolean 類型
console.log(typeof Boolean("this is message"));
console.log(typeof Boolean(100));
// 轉化為 number 類型
console.log(typeof Number("100"));
console.log(typeof Number(true));
// 轉化為 string 類型
console.log(typeof String(100));
console.log(typeof String(true));

關於轉換為數字時 JavaScript 提供了提供了兩個函數用戶轉換為 number 類型的整數和浮點數。

console.log(parseInt(11.11));
console.log(parseFloat(11.11));

但需要注意的是:轉換為整型即 parseInt 函數,如果包含小數則將小數部分舍掉,並不會四捨五入計算。

console.log("100轉化為", parseInt("100"));
console.log("100.55轉化為", parseInt("100.55"));
console.log("100轉化為", parseFloat("100"));
console.log("100.55轉化為", parseFloat("100.55"));
/*
輸出結果為:
100 轉化為 100
100.55 轉化為 100
100 轉化為 100
100.55 轉化為 100.55
*/

關於轉換為 string 類型 JavaScript 還提供一個 toString 方法。

var num = 100;
var bool = true;
console.log(typeof num.toString());
console.log(typeof bool.toString());
更新於 閱讀次數

用實際行動犒賞爆肝的我😀

Zrn Ye LinePay

LinePay