`JavaScript`中的變量、函數名都是區分大小寫的,`name`,`Name`,`NAME`,不是同一個變量
標識符就是變量、函數、屬性的名字或者函數的參數
註釋就是不被計做程序語句,專門用來給程序員本身看的內容 //單行註釋 /* * 多行註釋 * */
變量就是一個用來存儲數據的,聲明變量用`var`
//聲明一個變量,名字叫name var name;
若是要定義多個變量,有兩種方式能夠定義:java
//方式一:分開定義 var name; var age; var sex; //方式二:統必定義 var name,age,sex;
//變量能夠在聲明的時候賦值 var name = 'John'; //也能夠聲明之後再賦值 var name; name = 'John'; //這裏的變量值也能夠是"John",單引號和雙引號都表示字符串 //賦值之後能夠修改變量的值 // 方法一 var name = 'John'; name = 'Tome'; console.log(name);//Tome //方法二 var name; name = 'John'; name = 'Tome'; console.log(name)//Tome
function demo(){ var name = 'John'; } demo();//調用函數--在函數名後面加括號`()`表示執行該函數 console.log(name);//錯誤
在上面這段代碼中,在函數內部定義了一個局部變量,局部變量在函數運行結束之後就會被銷燬,此時在函數外面調用name
變量的時候,name
這個變量並不存在程序員
function demo(){ name = 'John';//全局變量 } demo(); console.log(name); //John
上面這段代碼中在函數內聲明瞭一個變量,可是並無用var
聲明,此時當函數運行事後,name
就是一個全局變量,那麼函數運行結束之後,這個變量並無被銷燬,因此在函數體外部依然能夠找到name
這個變量函數
前文中提到的全局變量、局部變量、函數體等知識點雖然沒有學過,可是能夠提早理解一下,後面會作詳細介紹
另外,雖然省略var
操做符能夠定義全局變量,可是不推薦這樣作,由於在局部中定義全局變量難以維護
在javaScript中有5種數據類型(基本數據類型):Undefined
,Null
,Boolean
,Number
,String
。Object
也是一種數據類型,可是是複雜數據類型,Object
本質上是由一對健值對組成。學習
typeof
用來檢測數據類型,返回的結果有:設計
"undefined"
---未定義"boolean"
---布爾類型"string"
---字符串"number"
---數字類型"object"
---對象或者是null
typeof null
會返回object
,這是由於特殊值null
被認爲是一個空對象
// undefined var name; console.log(typeof name); //var定義,結果是string,let定義是undefined // let,ECMAScript6中定義數據的關鍵字 // boolean var flag = true; console.log(typeof flag); //boolean // string var name = 'Json'; console.log(typeof name); //string // object var obj = { 'name': 'Json', 'age': 20 }; console.log(typeof obj); //object // function function add(a,b) { return a + b; } console.log(typeof add);//function
Undefined
只有一個值,即undefined
。對於聲明瞭可是沒有初始化的變量,其值就是一個undefined
。指針
var name; console.log(name == undefined);// true // 這個例子相似於 var name = undefined; console(name == undefined);// true
Null
類型是一個只有一個值的數據類型,這個值是null
。code
var person = null; console.log(typeof person);// object
這裏給person
賦值爲null
,表示person是一個空指針的變量,未來指向一個對象。
因此若是要定義一個變量,未來用於保存對象,那麼賦初始值的時候要賦值爲null
。好比下面這個例子:對象
var person = null; if(person == null){ person = { "name":"Jerry", "age":20 } }
Boolean
有兩個字面值:true
和false
。ip
var flag = true; var isSuccess = false;
在JavaScript
中,能夠將全部的數據類型的值轉換爲布爾類型的值。轉換方法以下:作用域
var name = 'Json'; var nameBoolean = Boolean(name); console.log(nameBoolean);//true
轉換規則:
String
類型,非空爲true
,空爲false
Number
類型,非0爲true
,0和NaN
爲false
Object
類型,任何對象爲true
,null
爲false
好比咱們能夠用字符串的非空做爲判斷的條件:
var message = "Please send me latter"; if(message){ send(message); } function send(mes){ console.log("發送消息---消息內容爲"+mes); }
關於Number
類型的數據,咱們不去研究八進制、十六進制,這些類型的數據會給咱們的學習帶來不小的負擔,另外數值的範圍咱們也不去研究。
關於數值轉換,須要學習三個函數:Number()
,parseInt()
,parseFloat()
。
Number()
:用於將任何數據類型轉換爲數值類型的數據;parseInt()
:將字符串類型的數字轉換爲int
類型的數據;parseFloat
:將字符串類型的數據轉換爲float
類型的數據。Number()
:
Boolean
類型的數據,true
被轉換爲1,false
被轉換爲0;null
,返回0;undefined
返回的是NaN
若是是字符串
'123'
,返回123
,若是是'0123'
返回的是123
;var number1 = Number('John');//NaN var number2 = Number('');//0 var number3 = Number('090');//90 var number4 = Number(true);//1 var number5 = Number(false);//0 var number8 = 12+'number';//NaN
parseInt()
:
var number = parseInt('070');//56
前面的Number()
則是將'070'
轉換成了70
,而parseInt()
則是將070
轉換成了56
,這是由於parseInt()
函數將'070'
看成是八進制的一個數值進行轉換
爲了消除這種困惑,在parseInt()
函數中還有另外一個參數做爲補充,第二個參數能夠指定被轉換值按照什麼類型的值去轉換:
var num1 = parseInt("10", 2);//2 (按二進制解析) var num2 = parseInt("10", 8);//8 (按八進制解析) var num3 = parseInt("10", 10);//10(按十進制解析) var num4 = parseInt("10", 16);//16(按十六進制解析)
parseFloat()
與parseInt()
相似,是從第一個字符開始解析,解析到字符串末尾或者遇到第二個小數點爲止,好比’12.34.32’
解析的結果就是12.34
。下面的例子中,標記有(瞭解)的能夠不作重點關注:
var num1 = parseFloat("1234blue");//1234 (整數) var num2 = parseFloat("0xA"); //0 (瞭解) var num3 = parseFloat("22.5");//22.5 var num4 = parseFloat("22.34.5");//22.34 var num5 = parseFloat("0908.5"); //908.5 var num6 = parseFloat("3.125e7"); //31250000 (瞭解)
String
類型的數據,簡單來講,就是由雙引號("")和單引號('')包裹起來的都是String
類型的數據。
在這裏,單引號和雙引號均可以用來表示字符串,要注意一點,引號要對稱:
String name = 'Jhon";//先後引號不一致,錯誤
String name = 'Tom'; String subString = 'name:'+ name; // 若是是數字類型的數據和字符串拼接,那麼會默認將數字轉換成字符串,而後拼接 String stringNumber = 1 + 'string';
toString()
方法toString()
默認是以十進制的方式去轉換的,可是咱們能夠經過添加參數來規定轉換的方式
var num = 10; console.log(num.toString());// "10"--十進制 console.log(num.toString(2));// "1010"---二進制 console.log(num.toString(8));// "12"---八進制 console.log(num.toString(10));// "10"---十進制 console.log(num.toString(16));// "a"---十六進制
String()
方法String()
方法的轉換規則與toString()
方法基本相似,這是由於它的轉換規則:
toString()
方法,就調用toString()
方法;null
,返回null
;undefined
,返回undefined
。var value1 = 30; var value2 = null; var value3 = undefined; console.log(String(value1));//"30" console.log(String(value2));//"null" console.log(String(value3));//"undefined"
Object
類型的數據其實就是一對健值對,健值對就是一個屬性對應一個值,對象的建立方式能夠有兩種,一種是用關鍵字new
建立,一種是用花括號建立:
第一種
var obj = new Object();//建立一個對象 // 給對象添加屬性和值 obj.name = 'Tom'; obj.age = 20; // 取對象中的值 console.log(obj.name);// 'Tom' console.log(obj.age);// 20
第二種
var obj = { "name": "Tom", "age": 20 } // 這裏是兩種取值方式 console.log(obj.name); //'Tom' console.log(obj.age); //20 console.log(obj['name']); //'Tom' console.log(obj['age']); //20
下面的這些知識點能夠做爲了解,後面會細講
Object
的每一個實例都具備下列屬性和方法:
constructor
:保存着用於建立當前對象的函數。構造函數(constructor
) 就是Object()
;hasOwnProperty(propertyName)
:檢查給定的屬性在當前對象實例中(而不是在實例 的原型中)是否存在。其中,做爲參數的屬性名(propertyName
)必須以字符串形式指定(例 如:o.hasOwnProperty("name")
);isPrototypeOf(object)
:用於檢查傳入的對象是不是傳入對象的原型;propertyIsEnumerable(propertyName)
:用於檢查給定的屬性是否可以使用for-in
語句來枚舉。與hasOwnProperty()
方法同樣,做爲參數的屬性名必須以字符串形式指定;toLocaleString()
:返回對象的字符串表示,該字符串與執行環境的地區對應;toString()
:返回對象的字符串表示;valueOf()
:返回對象的字符串、數值或布爾值表示。一般與toString()
方法的返回值相同。
《JavaScript高級程序設計》