基本語法
直接量
var number = 1; //1 是直接量
直接量也可以是其他類型:
1.2 "Hello World" true false null [] {name:"js"} ...
變量
var number = 1; //mumber 是變量
我們可以把變量看做一個個的盒子,我們可以在盒子里放各種不同的東西,然后給盒子命名不同的名稱.
命名盒子的過程叫做:聲明變量 (語法: var 變量名; )
例如 var age; var name; var sex;
或者 var age,name,sex;
標識符
標識符就是指變量、函數、屬性的名字,或者函數的參數,最好采用駝峰大小寫格式,也就是第一個字母小寫,剩下每個單詞首字母大寫。
- 命名要求
- 以字母 下劃線 或者美元符號($)開頭
- 由字母 下劃線 或者美元符號($)和數字組成
- 范例
-
var abc; var _abc; var $abc; var _abc1$;
都是合法的; -
var 1abc; var *abc; var abc&; var #abc1$;
都是不合法的
-
-
關鍵字和保留字
不能做標識符 - 大小寫敏感
var age; var Age;
是不同的.
語句
- 每個語句都以分號結尾,雖不是必須的,但強烈建議加上,以面不必要錯誤
- 語句是可以嵌套的
- 把多條語句組合到一個代碼塊中,用 {} 包括;而且在控制語句中使用代碼塊可以讓編碼意圖更清晰,降低修改代碼出錯的概率。
注釋
單行注釋
以//開頭
//我被注釋了
塊級注釋
以/*開頭,以*/結尾
不可嵌套
/*
* 這是一個多行
* (塊級)注釋
*/
基本類型
基本數據類型:Number String Boolean Null Undefined Object
Number
整數
十進制
var intNum = 55;
//整數
八進制
字面值第一位必須是零(0),然后八進制數字序列(0-7)). 如果字面值數值超出范圍,前導零忽略,和面當做十進制解析
var octalNum1 = 070; //八進制56
var octalNum2 = 079; //無效的八進制數值---解析為79
var octalNum3 = 08; //無效的八進制數值---解析為8
八進制字面量在嚴格模式下無效,會導致支持該模式的js引擎拋出錯誤
- 十六進制
字面量前兩位必須是0x,后跟任何十六進制數字(0-9及A-F)
var hexNum1 = 0xA; //十六進制的10
var hexNum2 =0x1f; //十六進制31
所有以八進制和十六進制表示的數值都將被裝換成十進制數值。
浮點數值
浮點數就是該數值中必須包含一個小數點.
保存浮點數值需要的內存空間是保存整數值的兩倍所以,ECMAScript會不失時機的將浮點數值轉換為整數值
var floatNum1 = 1.; //小數點后面沒有數字--解析為1
var floatNum2 = 10.0; //整數--解析為10
對于極大或極小的數值,用科學計數法(e)
表示,等于e
前面的數值乘以10
的指數次冪。
var floatNum =3.125e7; //等于31250000
浮點的最高精度是17位小數。
數值范圍
Infinitiy(正無窮)
-Infinnity(負無窮)
- 確定一個數值是不是有窮的(是不是位于最大與最小之間),可
以使用isFinite() 函數
,位于其中,返回true。
var result = Number.Max_VALUE + Number.Max_VALUE;
alert(isFinite(result)); //false
NaN
NaN即非數值(Not a Number)
是一個特殊的數值,表示一個本來要返回數值的操作數未返回數值的情況
- 任何涉及NaN的操作都會返回NaN
- NaN與任何值都不相等,包括NAN本身
alert(NaN == NaN); //false
定義了isNaN()
的函數,函數接受一個參數,該參數可以使任何類型,幫我們確定這個參數是否不是數值
alert(isNaN(NaN)); //true
alert(isNaN(10)); //false(10是一個整數)
alert(isNaN(“10”)); //false(可以被轉換成10)
alert(isNaN(“blue”)); //false(不能轉換成數值)
alert(isNaN(“true”)); //false(可以被轉換成1)
數值轉換
有三個函數可以把非數值轉換為數值:
Number() parseInt() parseFloat()
-
Number()
函數轉換規則- 如果是
Boolean
值,true和false
將分別被轉換為1和0
- 如果是數字值,簡單的傳入和返回
- 如果是
null
值,返回0
- 如果是
undefined,
返回NaN
- 如果是字符串,遵循以下:
- 如果字符串中只包含數字(包括前面帶正號和負號),將其轉換為十進制數值
- 如果字符串中包含有效的浮點格式,則將其轉換為對應的浮點數值
- 如果字符串是空的(不包含任何字符),轉換為0
- 如果字符串中包含除上述格式之外的字符,則轉換為NaN
- 如果是對象,調用對象的
valueOf()
方法,按照前面的規則返回相應的值.如果結果是NaN,調用toString()
方法,按照前面的返回字符串值
var num1 = Number('Hello World') //NaN var num2 = Number('') //0 var num3 = Number('000011') //11 var num4 = Number(true) //1
- 如果是
-
parseInt()
函數轉換-
parseInt()
函數在轉化字符串時,更多的看是否符合數值模式 - 它會
忽略字符串前面的空格
,直至找到第一個非空字符串
. - 如果第一個字符
不是數字字符或者負號
,會返回NaN
var number1 = parseInt('123456')//123456 var number2 = parseInt('') //NaN var number3 = parseInt('22.5') //22 var number4 = parseInt('070') //56(八進制)
-
-
parseFloat()
函數轉換規則- parseFloat()只解析十進制
var number1 = parseFloat('1234blue') //1234(整數) var number2 = parseFloat('22.5') //22.5 var number3 = parseFloat('22.34.5') //22.34 var number4 = parseFloat('0908.5') //908.5
String
String
即字符串類型,只要是被單引號(‘’)或者雙引號(“”)引起來的類型就是String類型
var firstname = "Yangyumeng";
var lastNmae = '123';
字符串的特點
字符串是不可變的,字符串一旦創立,它們的值不能改變,要改變某個變量保存的字符串,首先銷毀原來的字符串,然后在用另一個包含新值的字符串填充該變量
var lang = "Java"
lang = lang + "Script"
轉換成字符串
要把一個值轉換成字符串有兩種方式。第一種使用幾乎所有值都有的
toString()
方法,返回的是相應值字符串的表現
var age = 11;
var ageAsString = age.toString(); // 字符串“11”
var found = true;
var foundAsString = found.toString(); // 字符串“true”
但是null、undefined值沒有toString()方法。
一般情況下,調用
toString()
方法不必傳參數,但在調用數值toString()
方法時,可以傳遞一個參數:輸出數值的基數。
var num = 10;
alert(num.toString()); //"10" 默認10進制
alert(num.toString(2)); //"1010"
alert(num.toString(8)); //"12"
alert(num.toString(16)); //"a"
在不知道轉換的值是不是
null
或undefined
,使用轉型函數String()
,這個函數能將任何值轉換為字符串,String()
遵循以下規則
- 如果值有toString()方法,則調用該方法(沒有參數)并返回相應結果
- 如果值是null,則返回"null"
- 如果值是undefined,則返回"undefined".
Boolean
Boolean
類型只有兩個字面值:true和false
,雖然Boolean
類型字面值只有兩個,但ECMAScript
中所有類型都有與這兩個Boolean
值等價的值。要將一個值轉換為其對應的Boolean
值,可以調用函數Boolean() 轉換規則
數據類型 | 轉換為true的值 | 轉換為false的值 |
---|---|---|
Boolean | true | false |
String | 任何非空字符串 | ""(空字符串) |
Number | 任何非零數字值 | 0和NaN |
Object | 任何對象 | null |
Undefined | n/a(不適用) | undefined |
Object
Object
是一組數據和功能的集合,對象可以通過執行new操作符后跟要創建的對象類型的名稱來創建
var o = new Object();
Object類型所具有的任何屬性和方法也同樣存在于更具體的對象中
- Object的每個實例都具有下列屬性和方法:
-
constructor
:保存著用于創建當前對象的函數,對前面而言,構造函數(constructor)
就是Object()
。 -
hasOwnProperty
:用于檢查給定的屬性在當前對象實例中(而不是在實例的原型中)是否存在。其中,作為參數的屬性(*propertyNmae*)
必須以字符串形式指定(例:o.hasownProperty(“name”)
)。 -
isprototypeof(object)
:用于檢查傳入的對象是否是當前對象的原型 -
propertyIsEnumerable(propertyName)
:用于檢查給定的屬性是否能夠使用for-in
語句來枚舉,參數的屬性名必須是字符串。 -
toLocalString()
:返回對象的字符串表示,該字符串與執行環境的地區對應 -
toString()
:返回對象的字符串表示。 -
valueOf()
:返回對象的字符串、數值或布爾值表示。
-
Null
Null類型只有一個值:null
- 表示對象不存在
var car = null;
如果定義的變量準備在將來用于 保存對象 ,那么最好將該變量初始化為
null
而不是其他值。這樣,只要檢查null值可以知道相應的變量是否已經保存了一個對象的引用
if(car != null){
//對car對象執行某種操作
}
Undefined
Undefined
類型只有一個值:undefined
。在使用var
聲明變量但為對其加以初始化時,變量值就是undefined
。
例如:
var message;
alert(message == undefined); //true
- 使用場景:
未初始化的值(已聲明未賦值的變量)默認是undefined值
var a;
console.log(a); //undefined
獲取對象中不存在的屬性
var obj = {a:1,b:2}
console.log(obj.c); //undefined
類型識別
typeof操作符
var num;
typeof num; //undefined
var num = 1;
typeof num; //number
var num = "1";
typeof num; //string
var flag = true;
typeof flag; //boolean
var cat = null;
typeof cat; //object
原始類型和引用類型
- 原始類型
- Number
- String
- Boolean
- Null
- Undefined
- 引用類型
- Object
原始類型和引用類型 區別
今天先把javascript的基本語法和六大基本類型做個了解,后面繼續學習知識點,并做筆記