Javascript中的變數的特性

2021-08-02 01:45:51 字數 2419 閱讀 4456

js中的資料型別分為兩類:原始型別和物件型別。原始型別包括數字、字串和布林值。其中有兩個特殊的原始值:null和undefined。它們分別代表了各自特殊 型別的唯一的成員。另外復合型別是指物件,它是屬性的集合。包括普通物件、陣列、函式、regexp以及error。

一、原始型別

1、數字

在js中不區分整數值和浮點數值。所有的數字均用浮點數值表示。在數值表示法中,可分為整型直接量和浮點型直接量,雖然某些js實現中可以允許採用八進位制形式表示整數,但在某些實現中並不支援。因此最好不要以0為字首的整型直接量。數字的運算包括「+」、「-」、「*」、「/」、「%」,而運算的結果可能會存在溢位(超過js所能表示的數字上限)、下溢(是當運算結果無限接近於零並比js能表示的最小值還小,這種情況下,js將會返回0,當乙個負數發生下溢時,將返回乙個特殊的「負零」)。另外,需要注意的是,在二進位制的浮點數表示法並不能精確類似0.1這樣簡單的數字。所以js(包括幾乎所有現代程式語言),並不能精確表示0.1這樣的小數,看下面這段**:

var x = 0.3 - 0.2;

var y = 0.2 - 0.1;

x == y //false:兩個值不相等!

2、字串

字串是一組由16位值組成的不可變的有序序列,每個字元通常來自於unicode字符集。要注意的是js中並沒有表示單個字元的「字元型」。

在es3中,字串直接必須寫在一行中,而在es5中,字串直接量可以拆分為數行,但每行必須以反斜線(\)結束。還有就是當使用單引號來定界字串時,需要格外小心英文中的縮寫和所有格寫法,比如can』t和o』reilly』s。因為撇號和單引號是同乙個字元,所以必須使用反斜線(\ )轉義。因此這就涉及到了字元轉義的方法。在js中有兩個方法是通用的,即通過十六進製制數表示latin-1或unicode中的任意字碼。例如,\xa9表示版權符號,同樣,\u表示由4個十六進製制數指定的任意unicode字元,比如,\u03c0表示字元。

js中的轉義字元

轉義字元 含義

\o null

\b 退格

\t 水平製表

\v 垂直製表

\f 分頁

\r 換行

\』 單引號

\」 雙引號

\*** 兩位十六進製制表示的latin-1字元

\u***x 四位十六進製制表示的unicode字元

\ 反斜線

如果\出現在除以上所列的字元前,則忽略,當然字串還有很多實用的api,具體可以參考一下《關於陣列與字串的使用》博文。

3、布林值

布林值指代真或假、開或關、是或關。這個型別只有兩個值,保留字true和false。其中任意js的值都可以轉換為布林值。下面這些值會被轉換為false:

4、null和undefined

null是js中的關鍵字,它表示乙個特殊值,常用來描述「空值」。對null執行typeof預算結果返回字串」object」,也就是說,可以將null認為是乙個特殊的物件值,含義是「非物件」。還有第二個值即undefinded來表示值的空缺。用未定義的值表示更深層次的「空值」。它是變數的一種取值,表明變數沒有初始化,如果要查詢物件屬性或陣列元素的值 時返回undefined則說明這個屬性或元素不存在。如果函式沒有返回任何值,則返回undefined。引用沒有提供實參的函式形參的值也只會得到undefined。一般認為undefined是系統級的、出乎意料的或類似錯誤的值的空缺,而null是表示程式級的、正常的或在意料之中的值的空缺。如果想將它們賦值給變數或者屬性,或將將它們作為引數傳入函式,最佳選擇是使用null。

5、物件

本文要闡述的是全域性物件和包裝物件。全域性物件在js中有著重要的用途:全域性物件的屬性是全域性定義的符號,js程式可以直接使用。當js直譯器啟動時(或任何web瀏覽器載入頁面的時候),它將建立乙個新的全域性物件,並給它定義一組初始屬性:

全域性屬性:undefined、infinity、和nan

全域性函式:isnan()、parseint()、eval()

建構函式:date()、regexp()、string()、object()、array()

全域性物件:math和json

不在任何函式內的js**可以使用js關鍵字this來引用全域性物件:var global = this;

另外就是包裝物件,它其實就是一種臨時物件,在使用完後就被銷毀了。具體可以通過string()、number()、boolean()建構函式顯示建立。也可以通過給字串、數字、布林的原始型別建立乙個新屬性來建立包裝物件。注意下面**產生的誤區。

var s = 『test』;

s.len = 4;

var t = s.len ;//查詢這個屬性,t的值是undefined。第二行**建立乙個臨時字元物件,並給其len屬性賦值為4,隨即銷毀這個物件。第三行通過原始的字串值建立乙個新字元物件,嘗試讀取其len屬性,這個屬性自然不存在,表示式求值結果為undefined.

JavaScript中的變數型別

問題 1 js中使用 typeof 能得到哪些變數型別?2 何時使用 何時使用 3 js中有哪些內建函式?4 js變數按照儲存方式區分為那些型別,並描述其特點 5 如何理解json 分析 變數型別 值型別 引用型別 引用型別 物件 陣列 函式 typeof 只能區分具體的值型別 undefined ...

javascript中的函式式宣告與變數式宣告

觀察下面兩段 試寫出hello word 的執行結果 變數式宣告 function hello msg alert msg 函式式宣告 function hello msg alert msg 對於變數式宣告,首先彈出word,然後彈出function,而函式式宣告,則兩次都是彈出function....

JavaScript 變數的作用域

1.全域性作用域 global scope 在 中任何地方都能訪問到的物件擁有全域性作用域,一般來說以下幾種情形擁有全域性作用域 1 最外層函式和在最外層函式外面定義的變數擁有全域性作用域,例如 1 2 3 4 5 6 7 8 9 10 11 12 varauthorname 山邊小溪 functi...