JavaScript--1.基本概念

語法

區分大小寫

`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操做符

typeof用來檢測數據類型,返回的結果有:設計

  • "undefined"---未定義
  • "boolean"---布爾類型
  • "string"---字符串
  • "number"---數字類型
  • "object"---對象或者是null
  • function`---函數類型的數據
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。對於聲明瞭可是沒有初始化的變量,其值就是一個undefined指針

var name;
console.log(name == undefined);// true
// 這個例子相似於
var name = undefined;
console(name == undefined);// true

Null類型

Null類型是一個只有一個值的數據類型,這個值是nullcode

var person = null;
console.log(typeof person);// object

這裏給person賦值爲null,表示person是一個空指針的變量,未來指向一個對象。
因此若是要定義一個變量,未來用於保存對象,那麼賦初始值的時候要賦值爲null。好比下面這個例子:對象

var person = null;
if(person == null){
    person = {
        "name":"Jerry",
        "age":20
    }
}

Boolean類型

Boolean有兩個字面值:truefalseip

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和NaNfalse
  • Object類型,任何對象爲truenullfalse

好比咱們能夠用字符串的非空做爲判斷的條件:

var message = "Please send me latter";
if(message){
    send(message);
}
function send(mes){
    console.log("發送消息---消息內容爲"+mes);
}

Number類型

關於Number類型的數據,咱們不去研究八進制、十六進制,這些類型的數據會給咱們的學習帶來不小的負擔,另外數值的範圍咱們也不去研究。

數值轉換

關於數值轉換,須要學習三個函數:Number()parseInt()parseFloat()

  1. Number():用於將任何數據類型轉換爲數值類型的數據;
  2. parseInt():將字符串類型的數字轉換爲int類型的數據;
  3. parseFloat:將字符串類型的數據轉換爲float類型的數據。
  • Number():

    • 若是是Boolean類型的數據,true被轉換爲1,false被轉換爲0;
    • 若是是數字,只是簡單的傳入和返回;
    • 若是是null,返回0;
    • 若是是undefined返回的是NaN
    • 若是是字符串

      • 若是是'123',返回123,若是是'0123'返回的是123;
      • 若是是十六進制的數據,則會返回對應的十進制的值;
      • 若是是空字符串,則返回0
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類型的數據。
在這裏,單引號和雙引號均可以用來表示字符串,要注意一點,引號要對稱:

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()方法基本相似,這是由於它的轉換規則:

  1. 若是被轉換的值有toString()方法,就調用toString()方法;
  2. 若是被轉換值是null,返回null
  3. 若是被轉換值是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類型

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高級程序設計》
相關文章
相關標籤/搜索