標籤:第一個 自己 運算式 允許 str 表達 字串分割 訪問 輸入
String的常用方法
| indexOf() |
返回字串中檢索指定字元第一次出現的位置 |
| lastIndexOf() |
返回字串中檢索指定字元最後一次出現的位置 |
| match() |
找到一個或多個Regex的匹配 |
| replace() |
替換與Regex匹配的子串 |
| split() |
把字串分割為子字串數組 |
| substr() |
從起始索引號提取字串中指定數目的字元 |
| substring() |
提取字串中兩個指定的索引號之間的字元 |
var person = null; // 值為 null(空), 但類型為對象
var person = undefined; // 值為 undefined, 類型為 undefined
Undefined 和 Null 的區別
對象只有被定義才有可能為 null,否則為 undefined。
typeof undefined // undefined
typeof null // object
null === undefined // false
null == undefined // true
5 + null // 返回 5 null 轉換為 0
"5" + null // 返回"5null" null 轉換為 "null"
"5" + 1 // 返回 "51" 1 轉換為 "1"
"5" - 1 // 返回 4 "5" 轉換為 5
/runoob/i 是一個Regex。
var txt = str.replace(/microsoft/i,"Runoob");var txt = str.replace("Microsoft","Runoob"); var str = "Visit Runoob!";var n = str.search("Runoob");
search() 方法 用於檢索字串中指定的子字串,或檢索與Regex相匹配的子字串,並返回子串的起始位置。
| i |
執行對大小寫不敏感的匹配。 |
| g |
執行全域匹配(尋找所有匹配而非在找到第一個匹配後停止)。 |
Regex模式
方括弧用於尋找某個範圍內的字元:
| 運算式 |
描述 |
| [abc] |
尋找方括弧之間的任何字元。 |
| [0-9] |
尋找任何從 0 至 9 的數字。 |
| (x|y) |
尋找任何以 | 分隔的選項。 |
元字元是擁有特殊含義的字元:
| 元字元 |
描述 |
| \d |
尋找數字。 |
| \s |
尋找空白字元。 |
| \b |
匹配單詞邊界。 |
| \uxxxx |
尋找以十六進位數 xxxx 規定的 Unicode 字元。 |
量詞:
| 量詞 |
描述 |
| n+ |
匹配任何包含至少一個 n 的字串。 |
| n* |
匹配任何包含零個或多個 n 的字串。 |
| n? |
匹配任何包含零個或一個 n 的字串。 |
test() 方法用於檢測一個字串是否匹配某個模式,如果字串中含有匹配的文本,則返回 true,否則返回 false。
var patt = /e/;
patt.test("The best things in life are free!");
字串中含有 "e",所以該執行個體輸出為:true
exec() 方法用於檢索字串中的Regex的匹配。
該函數返回一個數組,其中存放匹配的結果。如果未找到匹配,則傳回值為 null。
/e/.exec("The best things in life are free!");
字串中含有 "e",所以該執行個體輸出為:e
var part = /e/g;
// var result = part.exec("The best things in life are free!");
var result = "The best things in life are free!".match(part);
alert(result)
輸出 e,e,e,e,e,e
debugger 關鍵字
var x = 15 * 5; debugger; document.getElementbyId("demo").innerHTML = x;
console.log() 方法
變數提升:函式宣告和變數聲明總是會被解譯器悄悄地被"提升"到方法體的最頂部。
JavaScript 只有聲明的變數會提升,初始化的不會。
JavaScript strict 模式(strict mode)不允許使用未聲明的變數。
strict 模式通過在指令碼或函數的頭部添加 "use strict"; 運算式來聲明。
function myFunction() { "use strict"; y = 3.14; // 報錯 (y 未定義)}
在常規的比較中,資料類型是被忽略的,比如10=="10"為true
在嚴格的比較運算中,=== 為恒等計算符,同時檢查運算式的值與類型,比如10==="10" 為false
JavaScript 中的所有資料都是以 64 位元浮點型資料(float) 來儲存。
所有的程式設計語言,包括 JavaScript,對浮點型資料的精確度都很難確定:
var x = 0.1;var y = 0.2;var z = x + y // z 的結果為 0.30000000000000004if (z == 0.3) // 返回 false
字串斷行需要使用反斜線(\),如下所示:
var x = "Hello World!";
form表單
var x = document.forms["myForm"]["fname"].value;
<form name="myForm" action="demo_form.php" onsubmit="return validateForm()" method="post">名字: <input type="text" name="fname"><input type="submit" value="提交"></form>
// 判斷輸入是否為數字function isNumeric(n) { return !isNaN(parseFloat(n)) && isFinite(n);}
| JSON.parse() |
用於將一個 JSON 字串轉換為 JavaScript 對象。 |
| JSON.stringify() |
用於將 JavaScript 值轉換為 JSON 字串。 |
<a href="javascript:void(0)">單擊此處什麼也不會發生</a>
<a href="javascript:void(alert(‘Warning!!!‘))">點我!</a>
href="#"與href="javascript:void(0)"的區別
# 包含了一個位置資訊,預設的錨是#top 也就是網頁的上端。
而javascript:void(0), 僅僅表示一個死連結。
在頁面很長的時候會使用 # 來定位頁面的具體位置,格式為:# + id。
如果你要定義一個死連結請使用 javascript:void(0) 。
JavaScript 函數
在函數運算式儲存在變數後,變數也可作為一個函數使用:執行個體var x = function (a, b) {return a * b};var z = x(4, 3);
如果運算式後面緊跟 () ,則會自動調用。
不能自調用聲明的函數。
(function () { var x = "Hello!!"; // 我將調用自己})();
JavaScript 函數有個內建的對象 arguments 對象。
argument 對象包含了函數調用的參數數組。
arguments.length 屬性返回函數調用過程接收到的參數個數(準確說是調用者傳遞的參數個數):
建議最好為參數設定一個預設值:
function myFunction(x, y) { y = y || 0;}
當函數沒有被自身的對象調用時, this 的值就會變成全域對象。
函數作為對象方法調用,會使得 this 的值成為對象本身。
call() 和 apply() 是預定義的函數方法。 兩個方法可用於調用函數,兩個方法的第一個參數必須是對象本身。
兩個方法都使用了對象本身作為第一個參數。 兩者的區別在於第二個參數: apply傳入的是一個參數數組,也就是將多個參數組合成為一個數組傳入,而call則作為call的參數傳入(從第二個參數開始)。
JavaScript 閉包
閉包是可訪問上一層函數範圍裡變數的函數,即便上一層函數已經關閉。
閉包執行個體 :計數器
var add = (function () { var counter = 0; return function () {return counter += 1;}})();add();add();add();// 計數器為 3
這個叫作 JavaScript 閉包。它使得函數擁有私人變數變成可能。
計數器受匿名函數的範圍保護,只能通過 add 方法修改。
或者這樣
function a(){var i=0;function b(){alert(++i);}return b;}var c=a();c();
而且閉包是相對獨立的,如下的c和d雖然都是調用了a(),但是互不干擾。
<body> <p>局部變數計數。</p> <button type="button" onclick="myFunction()">計數!</button> <button type="button" onclick="myFunction2()">計數2!</button> <p id="demo">0</p> <p id="demo2">0</p> <script> function a() { var i = 0; function b() { alert(++i); return i; } return b; } var c = a(); function myFunction() { document.getElementById("demo").innerHTML = c(); } var d = a(); function myFunction2() { document.getElementById("demo2").innerHTML = d(); } </script></body>
JavaScript重點記憶