整理 JS基礎

2022-09-13 02:00:18 字數 3661 閱讀 8368

1.注釋

// this is an in-line comment.

/* this is a

multi-line comment */

2.資料型別

undefined(未定義), null(空), boolean(布林型), string(字串), symbol(符號), number(數字), and object(物件)

變數宣告未賦值,預設為undefined

當你對乙個值為undefined的變數進行運算操作的時候,算出來的結果將會是nan,nan的意思是「不是數字」。

你當用乙個沒有定義的變數來做字串連線操作的時候,它會如實的輸出"undefined"。

布林值要麼是true 要麼是false。它非常像電路開關, true 是「開」,false 是「關」。這兩種狀態是互斥的。

boolean 值絕不會寫作被引號包裹起來的形式。字串 的 "true" 和 "false" 不是 布林值,在 j**ascript 中也沒有特殊含義。

嚴格相等運算子(===)是相對於相等操作符(==)的一種操作符。與相等操作符不同的是,它會同時比較元素的值和 資料型別。

3 === 3 // true

3 === '3' // false

與相等運算子一樣,大於運算子在比較的時候,會轉換值的資料型別。

5 > 3 // true

7 > '3' // true

2 > 3 // false

'1' > 9 // false

3.變數名

最佳實踐使用 駝峰命名法 來書寫乙個 j**ascript 變數

變數名的第乙個單詞的首寫字母小寫,後面的單詞的第乙個字母大寫。

4.轉義引號

在 j**ascript 中,你可以通過在引號前面使用 反斜槓 (\) 來轉義引號。

var mystr = "i am a \"double quoted\" string inside \"double quotes\"";

\' 單引號

\" 雙引號

\\ 反斜槓符

\n 換行符

\r 回車符

\t 製表符

\b 退格符

\f 換頁符

5.叫中括號,{}叫大括號,()叫小括號

字串型別通過[索引] 來獲得對應的字元

var firstletteroflastname = "";

var lastname = "lovelace";

firstletteroflastname = lastname[0];

6.字串的值是不可變的。這意味著一旦字串被建立就不能被改變。(延伸:immutable.js)

並不 意味著 mystr 永遠不能被改變,只是字串字面量 string literal 的各個字元不能被改變。改變 mystr 中的唯一方法是重新給它賦乙個值

str.indexof(searchvalue)

str.indexof(searchvalue, fromindex)

indexof() 方法返**用它的 string 物件中第一次出現的指定值的索引,從 fromindex 處進行搜尋。如果未找到該值,則返回 -1。

7.陣列

乙個簡單的方法將資料追加到乙個陣列的末尾是通過 push() 函式。

.push() 接受把乙個或多個引數,並把它「推」入到陣列的末尾。

var myarray = [["john", 23], ["cat", 2]];

myarray.push(["dog",3]);

.pop() 函式用來「丟擲」乙個陣列末尾的值。我們可以把這個「丟擲」的值賦給乙個變數儲存起來。

陣列中任何型別的條目(數值,字串,甚至是陣列)可以被「丟擲來」 。

var onedown = [1, 4, 6].pop();

現在 onedown 的值為 6 ,陣列變成了 [1, 4]。

.shift() 它的工作原理就像 .pop(),但它移除的是第乙個元素,而不是最後乙個。

var myarray = [["john", 23], ["dog", 3]];

var removedfrommyarray = myarray.shift();

arr.slice([begin[, end]])

slice()方法返回乙個新的陣列物件,這一物件是乙個由 begin 和 end 決定的原陣列的淺拷貝(包括 begin,不包括end)。原始陣列不會被改變。

8.函式

把**的重複部分抽取出來,放到乙個函式(functions)中

function functionname()

函式的呼叫——通過函式名稱functionname加上後面的小括號來呼叫這個函式

functionname();

函式的引數parameters在函式中充當佔位符(也叫形參)的作用,引數可以為乙個或多個。呼叫乙個函式時所傳入的引數為實參,實參決定著形參真正的值。簡單理解:形參即形式、實參即內容。

function testfun(param1, param2)

testfun("hello", "world");

我們可以把資料通過函式的 引數 來傳入函式,也可以使用 return 語句把資料從乙個函式中傳出來。

function plusthree(num)

var answer = plusthree(5); // 8

在電腦科學中 佇列(queue)是乙個抽象的資料結構,佇列中的條目都是有秩序的。新的條目會被加到 佇列 的末尾,舊的條目會從 佇列 的頭部被移出。

寫乙個函式 queue ,用乙個陣列arr和乙個數字item作為引數。數字item新增到陣列的結尾,然後移出陣列的第乙個元素,最後佇列函式應該返回被刪除的元素。

function queue(arr, item)

// 初始化測試資料

var testarr = [1,2,3,4,5];

// 控制台輸出

console.log("before: " + json.stringify(testarr));

console.log(queue(testarr, 6)); // 你可以修改這一行來測試你的**

console.log("after: " + json.stringify(testarr));

9.作用域

在 j**ascript 中, 作用域 涉及到變數的作用範圍。在函式外定義的變數具有 全域性 作用域。這意味著,具有全域性作用域的變數可以在**的任何地方被呼叫。

這些沒有使用var關鍵字定義的變數,會被自動建立在全域性作用域中,形成全域性變數。當在**其他地方無意間定義了乙個變數,剛好變數名與全域性變數相同,這時會產生意想不到的後果。因此你應該總是使用var關鍵字來宣告你的變數。

在乙個函式內宣告的變數,以及該函式的引數都是區域性變數,意味著它們只在該函式內可見。

function mytest()

mytest(); // "foo"

console.log(loc); // "undefined"

在函式外,loc 是未定義的。

乙個程式中有可能具有相同名稱的 區域性 變數 和 全域性 變數。在這種情況下,區域性 變數將會優先於 全域性 變數。(先找當前作用域,再往外找)

var somevar = "hat";

function myfun()

函式 myfun 將會返回 "head",因為 區域性變數 優先順序更高。

js基礎複習問題整理

程式 var x document.write 僅顯示17位 x 12345678901234567890 document.write x 問題 輸出是 僅顯示17位 12345678901234567000 為什麼呢?後三位都顯示為0?答案 電腦是用有限的位數來表示某個數值的,不可能無限,否則多...

JS基礎整理之資料型別

js的資料型別 在es5的時候,我們認知的資料型別確實是 6種 number string boolean undefined object null。es6 中新增了一種 symbol 這種型別的物件永不相等,即始建立的時候傳入相同的值,可以解決屬性名衝突的問題,做為標記。其中 基本型別 單型別 ...

JS基礎篇 JS實現陣列去重方法整理

我們先來看下面的例子,當然 與網路,位址 刪除陣列中多個不連續的陣列元素的正確姿勢 我們現在將陣列中所有的 a 元素刪除 var arr a a b c d a a e g a f arr.foreach function value,index console.log arr a b c d a ...