JavaScript重點記憶

來源:互聯網
上載者:User

標籤:第一個   自己   運算式   允許   str   表達   字串分割   訪問   輸入   

String的常用方法

indexOf() 返回字串中檢索指定字元第一次出現的位置
lastIndexOf()

返回字串中檢索指定字元最後一次出現的位置

 

match() 找到一個或多個Regex的匹配
replace() 替換與Regex匹配的子串
split() 把字串分割為子字串數組
substr() 從起始索引號提取字串中指定數目的字元
substring() 提取字串中兩個指定的索引號之間的字元
trim() 移除字串首尾空白

 

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重點記憶

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.