JavaScript基礎筆記(一)基本概念

來源:互聯網
上載者:User

標籤:建立   原型   init   valueof   pre   out   退出   範圍   文法   

基本概念一、文法一)區分大小寫二)標識符

書寫規則同Java

三)注釋

四)strict 模式

1.在整個指令碼中啟用strict 模式:在頂部添加

"use strict"

2.指定函數在strict 模式下執行:

function doSth() {    "use strict"    //函數體}
二、變數

ECMAScript變數類型是鬆散類型,所謂鬆散類型就是可以儲存任何類型的資料。

//定義變數var msg;//注意由var定義的變數使局部變數,如果變數在函數中函數退出後變數就會被銷毀//省略var定義並初始化一個全域變數msg2 = "Hi" //不推薦在函數中定義全域變數,因為在局部範圍中定義全域變數很難維護,//函數中的變數也會因為不會馬上就用定義導致不必要的混亂//定義多個var a = 1,b = ‘yes‘,c = 5;
三、資料類型

五種基礎資料型別 (Elementary Data Type):Null,Undefined, Boolean, Number, String

一種複雜資料類型:Object,Object本質上是由一組無序的名值對組成。

ECMAScript不支援任何建立自訂類型機制,所以所有的類型最終都將是上述6種類型之一。

typeof操作符:用於檢測變數類型。對一個值使用該操作符會返回下列字串之一:

1."undefined":

2."boolean"

3."string"

4."number"

5."object":如果該值是對象或者null

6."function"

一)Undefined類型

Undefined類型只有一個值:undefined

1 var msg;2 var name = undefined;3 console.log(msg == undefined); //true4 console.log(name === undefined); //true5 // console.log(age);  //報錯----"age is not defined"6 console.log(typeof age);  //"undefined"-----對於未聲明的變數,只能執行該操作

所以,顯示地初始設定變數是最吼的!!!!+1s

二)Null類型

Null也只有一個值:null。

undefined派生於null

alert(null == undefined); //true
三)Boolean類型

要將一個值轉換為Boolean類型可以調用Boolean()函數。

各種類型轉換為Boolean類型

資料類型                                   轉換為true的值                                  轉換為false的值

   String                                    任何非Null 字元串                                   ""即空串

   Number                                 任何非零數字                                      0和NaN

   Object                                   任何Object                                           null

   Undefined                             n/a (不適用)                                    undefined

注意:

var msg = "hi";if (msg) {        //自動轉換為Boolean類型    console.log("msg is true");}
四)Number類型
console.log(typeof Infinity); //numberconsole.log(typeof NaN); //number

1.整數

可以是十進位八進位(八進位strict 模式無效)十六進位

var a = 070  //八進位56var b = 079  //無效的八進位,解析為79

2.浮點數

var a = 1.0    //自動解析為1var b = .123  //有效不推薦var c = 1.23e3 //123if (0.3+0.2 == 0.5) { //因為浮點數計算時精度問題,不要這樣做}

3.數值範圍

最小:Number.MIN_VALUE      最大:Number.MAX_VALUE    超出範圍自動轉換為Infinity,Infinity不能參與數值計算。

判斷是否屬於最大與最小之間可以用:isFinite(num)函數。

4.NaN

即(Not a number)是一個特殊數值,表示本來要返回數值而沒有返回的情況(這樣就不用報錯了)。

注意:1.任何涉及NaN的操作都會返回NaN       2.NaN與任何數值都不相等,包括其本身。

isNaN()

console.log(isNaN(NaN));    //trueconsole.log(isNaN("Yellow"));  //trueconsole.log(isNaN("100"));   //false

5.數值轉換

1.Number()函數:

可用於任何資料類型

Boolean值分別轉換為1和0

null轉換為0

undefined轉換為NaN

字串:

只包含數值轉換為10進位,包含有效16進位格式轉換為10進位,空串轉換為0,其餘轉換為NaN。

如果是對象則先調用valueOf()函數,如果得到NaN則再調用toString()

var num1 = Number("Hello world!"); //NaNvar num3 = Number("000011"); //11

2.parseInt()函數:

parseInt()函數會忽略字串前面的空格,直到找到第一個非Null 字元,如果第一個字元不是數字或者負號就返回NaN

var num1 = parseInt("1234blue"); // 1234var num2 = parseInt(""); // NaNvar num3 = parseInt("0xA"); // 10(十六進位數)var num4 = parseInt(22.5); // 22var num5 = parseInt("070"); // 56(八位元)
var num1 = parseInt("AF", 16); //175var num2 = parseInt("AF"); //NaN
五)String類型

1.String 類型用於表示由零或多個 16 位 Unicode 字元組成的字元序列,即字串。字串可以由雙
引號(")或單引號(‘)表示 (無區別)。

2.ECMAScript 中的字串是不可變的

3.轉換為字串可用toString()函數,也可用String()函數:

? 如果值有 toString()方法(null和undefined沒有這個方法),則調用該方法(沒有參數)並返回相應的結果;
? 如果值是 null,則返回"null";
? 如果值是 undefined,則返回"undefined"。

三)Object類型

ECMAScript中類型是所有他的執行個體的基礎,即Object具有的所有方法和屬性同樣存在於更具體的對象中。

Object每個執行個體具有的方法和屬性:

1)constructor:儲存著建立當前對象的函數,比如,Object()

2)hasOwnProperty(propertyName):用於檢查給定的屬性在對象執行個體中(而不是執行個體的原型中)是否存在。其中propertyName必須以字串的形式指定。

3)propertyIsEnumerable(propertyName):檢查給定的語句能否用for-in語句來枚舉。同樣propertyName必須是字串。

4)toLocalString()

5)toString()

6)valueOf()

注意:從技術角度講, ECMA-262 中對象的行為不一定適用於 JavaScript 中的其他對象。瀏覽器環境中的對象,比如 BOM 和 DOM 中的對象,都屬於宿主對象,因為它們是
由宿主實現提供和定義的。 ECMA-262 不負責定義宿主對象,因此宿主對象可能會也可能不會繼承 Object。 

三、操作符

四、語句

for in 對對象的屬性進行遍曆,其順序不可預測。

label語句:

var num = 0;outermost:for (var i=0; i < 10; i++) {for (var j=0; j < 10; j++) {if (i == 5 && j == 5) {break outermost;}num++;}}alert(num); //55

使用with語句會導致效能下降,調試困難,不建議使用。

switch語句

可以在switch()括弧中使用任何類型,case中也不一定是常量,可以是變數或者運算式。

注意:switch語句在比較時使用的是全等符,因此不會發生類型轉換。

五、函數

文法:

function funName() {    //doSth}

注意:

1.調用函數時必須帶上括弧

2.不必指定傳回值,當然也可以指定

3.return語句不帶任何傳回值時,函數在停止後返回undefined

4.函數參數可以是任意多個,調用函數時可以傳遞任意多個參數,不一定與定義時相等,因為這個特性ECMAScript中函數不能重載

後定義的函數會覆蓋先定義的函數。

之所以會出現4中的情況,ECMAScript函數在函數內部時用一個類似數組的arguments對象來表示的,可以像用數組一樣使用arguments對象。

我們可以根據arguments的長度實現一個偽重載:

function doAdd() {if(arguments.length == 1) {alert(arguments[0] + 10);} else if (arguments.length == 2) {alert(arguments[0] + arguments[1]);}}

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.