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 ...