js基礎必看系列-->2024-10-30總結

GJ504b發表於2024-10-31

好的書寫習慣

  • 最好不要省略分號,尤其對新手來說
  • 確保 “use strict” 出現在最頂部

"use strict";
程式碼以現代模式工作【ES5 規範增加了新的語言特性並且修改了一些已經存在的特性。為了保證舊的功能能夠使用,大部分的修改是預設不生效的。你需要一個特殊的指令 —— "use strict" 來明確地啟用這些特性。】

  • " "與 ''區別不大

宣告變數

let user = 'John';
let age = 25;
let message = 'Hello';

let hello = 'Hello world!';
let message;  
message = hello;  // 將字串 'Hello world' 從變數 hello 複製到 message 
alert(hello);  // Hello world!
alert(message);  // Hello world!

//一個變數應該只被宣告一次。
//對同一個變數進行重複宣告會觸發 error:

const 與 let

  • const 將常量用作別名,以便記住那些在執行之前就已知的難以記住的值。
    const white = #fff   //(十六進位制)格式為顏色宣告常量: 

沒有那麼糟糕的var

  • var 宣告的變數會在函式開頭被定義,與它在程式碼中定義的位置無關(這裡不考慮定義在巢狀函式中的情況)。人們將這種行為稱為“提升”,因為所有的 var 都被“提升”到了函式的頂部。
if (true) {
  var test = true; // 使用 "var" 而不是 "let"
}
alert(test); // true,變數在 if 結束後仍存在

- 【不好找的邏輯錯誤】

var user = "Pete";
var user = "John"; // 這個 "var" 無效(因為變數已經宣告過了)
//不會觸發錯誤,只顯示一次
alert(user); // output John
  • 宣告會被提升,但是賦值不會。
    所有的 var 宣告都是在函式開頭處理的,我們可以在任何地方引用它們。但是在它們被賦值之前都是 undefined
 function sayHi() {
  alert(phrase);
  var phrase = "Hello";
}
sayHi();//undefined

NAN

NaN 代表一個計算錯誤。它是一個不正確的或者一個未定義的數學操作所得到的結果 任何對 NaN 的進一步數學運算都會返回 NaN:如果在數學表示式中有一個 NaN,會被傳播到最終結果
只有一個例外:NaN ** 0 結果為 1

** 是個冪運算

在 js 和 Python中,使用 ** 表示冪運算。

alert( 2 ** 2 ); // 2² = 4
alert( 2 ** 3 ); // 2³ = 8
alert( 2 ** 4 ); // 2⁴ = 16
alert( 4 ** (1/2) ); // 2 (1/2 次方)
alert( 8 ** (1/3) ); // 2 (1/3 次方)

在C語言和C++中,冪運算通常使用 pow 函式,例如 pow(a, b)。
在數學表示式中,冪運算通常使用上標表示,例如 a^b 表示 a 的 b 次冪。

運算子

一元運算子優先順序高於二元運算子
img

  • 一元運算子

加號 + 應用於單個值,對數字沒有任何作用。
但是如果運算元不是數字,加號 + 則會將其轉化為數字。它的效果和 Number(...) 相同,但是更加簡短。

  • 二元運算子

alert('1' + 2 + 2); // "122",不是 "14"
'12' + 2 === '122'
alert(2 + 2 + '1' ); // "41",不是 "221"
通常,加號 + 用於求和
但是如果加號 + 被應用於 字串 ,它將合併(連線)各個字串:

二元 + 是唯一一個以這種方式支援字串的運算子。其他算術運算子只對數字起作用,並且總是將其運算元(字元)轉換為數字。

alert( 6 - '2' ); // 4, 將 '2' 轉換為數字
alert( '6' / '2' ); // 3,將兩個運算元都轉換為數字
  • 三元運算子;JavaScript 中唯一一個有這麼多運算元的運算子

if (age > 18) {
accessAllowed = true;
} else {
accessAllowed = false;
}

等價於

let accessAllowed = (age > 18) ? true : false;

alert( alert(1) && alert(2) );  //顯示1,返回undefined,&& 使得結束運算
> alert( alert(1) || 2 || alert(3) );//顯示1 然後2.
  • 逗號運算子【有意思,少用】
    逗號運算子能讓我們處理多個表示式,使用 , 將它們分開。每個表示式都執行了,但是隻有最後一個的結果會被返回

與運算 && 的優先順序比 || 高

字串比較,字典順序,後面的更大,

從和第一個數字開始比較

"apple" > "pineapple" → false
"2" > "12" → true

普通的相等性檢查 ==

存在一個問題,它不能區分出 0 和 false:
嚴格相等 ===
嚴格不相等!==

null 與 undefined

  1. JavaScript 中的 null 僅僅是一個代表“無”、“空”或“值未知”的特殊值
  2. undefined 的含義是 未被賦值。,如果一個變數已被宣告,但未被賦值,那麼它的值就是 undefined
  • 判斷相等時不會進行任何的型別轉換:null 被轉化為 0,undefined 被轉化為 NaN
    undefined 和 null 在相等性檢查 == 中不會進行任何的型別轉換,它們有自己獨立的比較規則,所以除了它們之間互等外,不會等於任何其他的值

alert( null == undefined ); // true
alert( null == 0 ); // false

  • for null,當使用數學式或其他比較方法 < > <= >= 時:
    進行值比較時null 會被轉化為數字

alert( null > 0 ); // (1) false
alert( null >= 0 ); // (3) true

  • for undefined,undefined 不應該被與其他值進行比較:

alert( undefined > 0 ); // false (1)
alert( undefined < 0 ); // false (2)
alert( undefined == 0 ); // false (3)

Infinity 代表數學概念中的 無窮大 ∞。

number 與BigInt

  • number所有大於 (2^53-1) 的奇數都不能用 “number” 型別儲存。
  • BigInt型別是最近被新增到 JavaScript 語言中的,用於表示任意長度的整數。

可以透過將 n 附加到整數字段的末尾來建立 BigInt 值。

const bigInt = 1234567890123456789012345678901234567890n;
// 尾部的 "n" 表示這是一個 BigInt 型別

` 反引號

反引號是 功能擴充套件 引號。它們允許我們透過將變數和表示式包裝在 ${…} 中,來將它們嵌入到字串中。

let name = "John";
// 嵌入一個變數
alert( Hello, ${name}! ); // Hello, John!
// 嵌入一個表示式
alert( the result is ${1 + 2} ); // the result is 3

typeof

typeof 運算子返回引數的型別。當我們想要分別處理不同型別值的時候,或者想快速進行資料型別檢驗時,非常有用。

typeof undefined // "undefined"
typeof 0 // "number"
typeof 10n // "bigint"
typeof true // "boolean"
typeof "foo" // "string"
typeof Symbol("id") // "symbol"

七種原始資料型別(基本資料型別):
number 用於任何型別的數字:整數或浮點數,在 ±(253-1) 範圍內的整數。
bigint 用於任意長度的整數。
string 用於字串:一個字串可以包含** 0 個或多個字元,所以沒有單獨的單字元型別。
boolean 用於 true 和 false。
null 用於未知的值 —— 只有一個 null 值的獨立型別。
undefined 用於未定義的值 —— 只有一個 undefined 值的獨立型別。
symbol 用於
唯一**的識別符號。
object 用於更復雜的資料結構。
我們可以透過 typeof 運算子檢視儲存在變數中的資料型別。

通常用作 typeof x

typeof null 會返回 "object" —— 這是 JavaScript 程式語言的一個錯誤,實際上它並不是一個 object。

暫停指令碼執行的三劍客

alert
顯示資訊。

alert("Hello");

prompt
顯示資訊要求使用者輸入文字點選確定返回文字,點選**取消或按下 Esc 鍵返回

let test = prompt("Test", ''); // <-- 用於 IE 瀏覽器//點選取消,之後不會有內容顯示了

null
confirm
顯示資訊等待使用者點選確定或取消。點選
確定返回 true,點選取消或按下 Esc 鍵返回 false。**

let isBoss = confirm("Are you the boss?");
alert( isBoss ); // 如果“確定”按鈕被按下,則顯示 true

p.s.侷限

  1. 模態視窗的確切位置由瀏覽器決定。通常在頁面中心。
  2. 視窗的確切外觀也取決於瀏覽器。我們不能修改它。
    這些方法都是模態的:它們暫停指令碼的執行,並且不允許使用者與該頁面的其餘部分進行互動,直到視窗被解除。

相關文章