1. 程式人生 > >JavaScript --02 語法

JavaScript --02 語法

語法

JavaScript的語法和Java語言類似,每個語句以;結束,語句塊用{ ... }。但是,JavaScript並不強制要求在每個語句結尾加 ; ,瀏覽器負責執行JavaScript程式碼的引擎會自動在每個語句的結尾補上 ; 。 1.賦值語句: var  x = 1; 2.字串(也可視為一個完整的語句): 'Hello, world'; 3.一行程式碼可以包含兩個語句,每個語句用 ; 結束 var x = 1; var y = 2; 4.{ ... }還可以巢狀,形成層級結構,{ ... }內的語句具有縮排,通常是4個空格,編寫程式碼是要遵循縮排規則。
5.用 // 開頭直到行末的字元視為註釋,  /* ... */可以把多行字元包裹起來,從而侍衛一個註釋。
6.JavaScript不區分整數和浮點數,統一用Number表示。
123; // 整數123
0.456; // 浮點數0.456
1.2345e3; // 科學計數法表示1.2345x1000,等同於1234.5
-99; // 負數
NaN; // NaN表示Not a Number,當無法計算結果時用NaN表示
Infinity; // Infinity表示無限大,當數值超過了JavaScript的Number所能表示的最大值時,就表示為Infinity

7.字串是以單引號或雙引號括起來的,比如‘abc’, "xyz"等等。布林值和布林代數的表示完全一致,一個布林值只有true、false兩種值。
8.==比較的時候,它會自動轉換資料型別再比較,很多時候,會得到非常詭異的結果,第二種是===,它不會自動轉換資料型別,如果資料型別不一致,返回flase,如果一致,再比較。因此,不要使用==比較,始終堅持使用===比較。
9. NaN 這個特殊的Number與所有其他值都不相等,包括它自己。唯一能判斷NaN的方法是通過isNaN()函式。 isNaN(NaN);
//true 10.浮點數在運算過程中會產生誤差,因為計算機無法精確表示無限迴圈小數。要比較兩個浮點數是否相等,只能計算它們之差的絕對值,看是否小於某個閾值: Math.abs(1 / 3 - ( 1 - 2 / 3)) < 0.0000001; //true 1 / 3  === (1 - 2 / 3) //false 11.null表示一個’空‘值,與null型別類似的undefined,它表示“未定義”。JavaScript的設計者希望用null表示一個空的值,而undefined表示值未定義,事實證明,這並沒有什麼卵用,區分兩者的意義不大,大多數情況下,我們都應該用null,undefined僅僅在判斷函式引數是否傳遞的情況下有用。
12.JavaScript的陣列可以包含任意資料型別,例如:[ 1, 2, 3.14, 'Hello', null, true]; 元素之間用,分隔,同時我們可以通過Array()函式實現, new Array[1, 2, 3]; 
13. JavaScript的物件是一組由鍵-值組成的無序集合,例如:
var person = {
	name: 'Bob',
	age: 20,
	tags: ['js', 'web', 'mobile'],
	city: 'Beijing',
	hasCar: true,
	zipcod: null
};
JavaScript物件的鍵都是字串型別,值可以是任何資料型別,要獲取一個物件的屬性,我們用物件變數,屬性名的方式: person.name; // 'Bob'  person.zipcode; //null
14.JavaScript的變數名是大小寫英文,數字,$和_的組合,且不能用數字開頭。變數名也不能是JavaScript的關鍵字。申明一個變數用var語句。
var a; //申明瞭變數a,此時a的值為underfined
var $b = 1; //申明變數$b,同時賦值為1
var s_007 = '007'; //s_007是一個字串
var Answer = true; //Answer是一個布林值true
var t = null; // t的值是null
JavaScript的變數本身型別不固定,因而稱為動態語言,與之對應的是靜態語言。靜態語言在定義變數時必須指定變數型別,如果賦值型別不匹配,就會報錯。 var a = 123; a = "ABC"; //JavaScript 可以


15.JavaScript中, 如果一個變數沒有通過var 申明就被使用,那麼該變數就自動被申明為全域性變數,從而使用變數時會造成變數的互相影響,產生難以除錯的錯誤結果。使用var申請的變數的範圍被限制在該變數被申請的函式體內。為了修補上述設計缺陷,ECMA在後續規範中推出了strict模式,即強制通過var申請變數,沒使用var申請變數就使用,會導致執行錯誤。啟用strict模式的方法是在JavaScript程式碼的第一行寫上: ‘use strict',支援strict模式的瀏覽器將開啟strict模式,不支援strict模式的瀏覽器將會把它當做一個字串執行。所有的JavaScript的程式碼採用strict模式可以避免上述缺陷。
16.最新的ES6標準新增了一種多行字串的表示方法,用反引號‘...'表示: `這是一個 多行 字串’;
17. JavaScript可以用+號連線多個字串,ES6新增了以一種模板字串,它可以自動替換字串中的變數:
var name = '小明’;
var age = 20;
var message = `你好,${name}, 你今年${age}歲了!`;
18.字串是不可變的,toUppeCcase() 把一個字串全部轉為大寫;toLowerCase() 把一個字串全部轉為小寫;indexOf()會搜尋指定索引區間的字串;
var s = 'Hello, world'
s.length;
s[0];
s.toUpperCase();
s.toLowerCase();
s.indexOf('world');
s.substring(0, 5);