JavaScript基本概念(1)

一.語法javascript

  弱類型語法:ECMScript中嚴格區分大小寫(變量、函數名、操做符)。html

  標識符:就是指變量、函數、屬性的名字,或者函數的參數,標識符第一個字符必須是一個字母、下劃線_或者美圓符號,其餘字符可使字母、下劃線、美圓符號或者數字。標識符中也能夠包含擴展的ASCII或者Unicode字母字符,但不推薦。標識符采用駝峯大小寫格式。java

  註釋:ECMAScript採用c風格的註釋,包括單行註釋和塊級註釋,單行註釋://  ,塊級註釋:/*---*/正則表達式

  嚴格模式:ECMAScript5中引入了嚴格模式(strict mode )的概念,要在整個腳本中啓用嚴格模式在頂部添加代碼chrome

"use strict";

這行代碼看起來像是字符串,並且沒有賦值給任何變量,可是其實他是一個編譯指示(pragma),用於告訴支持的JavaScript引擎來切換到嚴格模式,指定函數在嚴格模式下執行可用瀏覽器

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

  語句:雖然語句結尾的分號不是必需的,可是加上這個分號能夠避免不少錯誤,在控制語句中使用代碼塊來讓編碼意圖更加清晰。app

  關鍵字和保留字:http://www.itxueyuan.org/view/6627.html函數

  變量:ECMAScript的變量類型是鬆散型的,就是能夠保存任何類型的數據,每一個變量僅僅是一個用於保存值的佔位符而已測試

var message;//定義變量
var message="hi";//能夠直接賦值
function test(){
var message="hi";//局部變量
}
function test(){
message="hi";//全局變量,不推薦!!
}
function test(){
var message1="hi",
    message2="hi world";//加逗號能夠一次定義多個變量      
}

  數據類型:包括五種簡單數據類型(也稱爲基本數據類型)undefined、null、boolean、number、string,和一種複雜數據類型object,不支持任何建立自定義類型的機制。編碼

  1.typeof操做符

    undefined---未定義

    boolean---布爾值

    string---字符串

    number---數值

    object---對象或者null

    function---函數

  主意typeof是操做符不是函數,後面的圓括號可加可不加,有些時候typeof操做符會返回一些使人疑惑卻正確的值,如調用typeof null可返回object,null爲一個空對象,Safari5及以前版本,chrome7及以前版本對正則表達式調用時會返回function,而其餘瀏覽器在這種狀況下會返回object。

  函數在ECMAScript中時對象,不是一種數據類型,可是也確實有一些特殊屬性,所以經過typeof來區分函數和對象是有必要的。

  2.undefined類型

    在使用var聲明變量時沒有對其加以初始化時,這個變量的值就爲undefined,當在程序中使用未初始化的變量時,會出現undefined,使用沒有聲明的變量,會出現錯誤,可是使用typeof操做符來執行兩種變量,都返回undefined值,這兩種變量從技術上有本質的區別,可是在實際中對哪一個變量都不能執行真正的操做。養成一個良好的習慣,應每個變量都給出初始化值。

  3.null類型

    表示一個空對象指針,若是定義的變量準備在未來用於保存對象,那麼就應該先把它初始化爲null。

    undefined派生與null,當undefined==null時會返回true,可是它們兩個用途徹底不一樣。

  4.boolean類型

數據類型  轉換爲true的值 轉換爲false的值
boolean true false
string 任何非空字符串 」「(空字符串)
number 任何非零數字值 0和NaN
object 任何對象 null
undefined n/a(not applicable)意思時不適用 undefined

  5.number類型

    最基本的數值字面量時十進制整數。

    八進制:第一位必須是0,而後位八進制數字序列(0-7),若數值超出了範圍,那麼前導數字被忽略後面數值被看成十進制解析,八進制在嚴格模式下時無效的,會致使js引擎拋出錯誤。

    十六進制:前兩位必須時0x,後面跟任何十六進制數字(0-9,a-f),字母可大寫也可小寫,+0和-0被認爲相等。

      浮點數值:浮點數值的計算會產生舍入偏差,當極大或極小的數值時用e來表示,因爲浮點數值所佔的內存空間是整數的兩倍,因此ECMAScript會不失時機的把浮點數轉換爲整數。

      數值範圍:ECMAScript中並不能保存世界上全部的數值,可以表示的最小數值保存在Number.MIN_VALUIE中,在大多數瀏覽器下,此值是5e-324,最大值保存在Number.NAX_VALUE中,1.7976931e+308,若某次結果計算超出了js數值範圍的值,則會被轉換成Infinity(無窮大)-Infinity。要想肯定一個數值是否是有窮的,可使用isFinite()函數,參數爲數值,返回值爲boolean值。

      NaN:not a number 用來表示一個原本要返回數值的操做數未返回數值的狀況(這樣就不會拋出錯誤了),NaN與任何值都不想等,包括他自身。用isNaN()函數來肯定參數是否是非數值。當使用時,會嘗試把數值轉換爲數值,如true、「10」。也適用於對象,會先調用對象的valueOf()方法,而後肯定該方法返回的值是否能夠轉換爲數值,若不能,再基於這個返回值再調用toString()方法,再測試返回值。

      數值轉換:三個函數,Number()、parseInt()、parseFloat()

    Number()函數:如果Boolean值,true和false分別返回1和0;如果數字值,只是簡單的傳入和傳出;如果null則返回NaN;如果字符串則遵循下列規則,字符串中若只包含數字,則將其轉換成十進制數值,若字符串中包含有效的浮點格式,則轉換成對應的浮點數值,若包含有效的十六進制格式,則轉換爲十進制整數值,若爲空,則爲0,若包含除了上述以外的字符,則將其轉換爲NaN;如果對象,則調用對象的valueOf()方法,而後依照前面規則轉換,若結果是NaN,則調用對象的toString()方法,而後再依次按照前面的規則返回字符串。

    Number()函數轉換時複雜且不夠合理,因此更經常使用的是parseInt()和parseFloat()函數。

    parseInt()函數:看是否符合數值模式,她會忽略字符串前面的空格,直到找到第一個非空格字符,若是第一個字符不是數字字符或者負號,會返回NaN,對空字符返回0;若第一個字符是數字字符,能夠識別出各類整數格式,可是在解析八進制字面量的字符串時,ECMAScript3和ECMAScript5有分歧,3會認爲是八進制的來轉換爲十進制,5會認爲是十進制的把前導0忽略;爲了消除這個困惑能夠爲函數提供第二個參數,轉化時用的基數(即多少進制)。建議爲了不錯誤,在任何狀況下都要明確指定基數。

    parseFloat()函數:始終會忽略前導0,而且只解析十進制,後面沒有第二個參數。

  6.String類型

  字符字面量:

字面量 含義
\n 換行
\t 製表
\b 退格
\r 回車
\f 進紙
\\ 斜槓
\' 單引號
\" 雙引號
\xnn 以十六進制代碼nn表示的一個字符
\unnnn 一十六進制代碼nnnn表示的一個Unicode字符

  字符串的lenght屬性包括轉義字符的長度,若字符串中包含雙字節字符,那麼lenght屬性可能不會精確的返回字符串中的字符數目。

  字符串的特色:字符串一旦被建立,他的值就不能改變,要改變某個變量的字符串,首先要銷燬原來的字符串而後用再用另外一個包含新值的字符串填充該變量。

  轉換爲字符串:兩種方法:每一個值都有的toString()方法,返回相應值的字符串表現,可是null和undefined沒有這個方法,大多數狀況下不用傳遞參數,可是再調用數值的toString()方法時能夠傳遞一個參數,輸出數值的基數。第二種方法String()方法,再不知道要轉換的值是否是null或undefined的狀況下,用String()函數,當值有toString()方法時,調用此方法,若值時null和undefined則返回「null」和「undefined」。

  小方法:若把某個值轉換爲字符串,可使用加號操做符把他與一個字符串「」加在一塊兒。

   7.Object類型

  ECMAScript中的對象其實就是一組數據和功能的集合,可以使用new操做符後跟要建立的對象類型的名稱來建立。

var o=new   Object();//標準
var o=new Object;//能夠省略圓括號,可是不推薦

  Object中每一個實例都具備下列屬性和方法:

    constructor:保存着用於建立當前對象的函數。

    hasOwnProperty(propertyName):用於檢查給定的屬性在當前對象實例中是否存在,而不是在實例的原型中,座位參數的屬性名(propertyName)必須以字符串的形式指定。

    isPrototypeOf(object):用於檢查傳入的對象是不是當前對象的原型。

    propertyIsEnumerable(propertyName):用於檢查給定的屬性是否可以使用for-in語句來枚舉。屬性爲字符串形式。

    toLocaleString():返回對象的字符串表示,該字符串與執行環境的地區對應。

    toString():返回對象的字符串表示。

    valueOf():返回對象的字符串,數值或者布爾值表示。

相關文章
相關標籤/搜索