1. 程式人生 > >JavaScript基礎筆記(一)基本概念

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

基本概念 world! 因此 空字符 pos ase 維護 rip 括號

基本概念

一、語法

一)區分大小寫

二)標識符

書寫規則同Java

三)註釋

四)嚴格模式

1.在整個腳本中啟用嚴格模式:在頂部添加

"use strict"

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

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

二、變量

ECMAScript變量類型是松散類型,所謂松散類型就是可以保存任何類型的數據。

//定義變量
var msg;
//註意由var定義的變量使局部變量,如果變量在函數中函數退出後變量就會被銷毀

//省略var定義並初始化一個全局變量
msg2 = "Hi" 
//不推薦在函數中定義全局變量,因為在局部作用域中定義全局變量很難維護,
//函數中的變量也會因為不會馬上就用定義導致不必要的混亂 //定義多個 var a = 1,b = ‘yes‘,c = 5;

三、數據類型

五種基本數據類型: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); //true
4 console.log(name === undefined); //true
5 // 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 任何非空字符串 ""即空串

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); //number
console.log(typeof NaN); //number

1.整數

可以是十進制八進制(八進制嚴格模式無效)十六進制

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

2.浮點數

var a = 1.0    //自動解析為1
var b = .123  //有效不推薦
var c = 1.23e3 //123

if (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));    //true
console.log(isNaN("Yellow"));  //true
console.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!"); //NaN
var num3 = Number("000011"); //11

2.parseInt()函數:

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

var num1 = parseInt("1234blue"); // 1234
var num2 = parseInt(""); // NaN
var num3 = parseInt("0xA"); // 10(十六進制數)
var num4 = parseInt(22.5); // 22
var num5 = parseInt("070"); // 56(八進制數)
var num1 = parseInt("AF", 16); //175
var 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基礎筆記(一)基本概念