国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

JavaScript數據類型的一些注意點

2019-11-08 02:41:13
字體:
來源:轉載
供稿:網友

參考:廖雪峰老師的javaScript全棧教程

(1)Javascript不區分整數和浮點數的,統一用Number表示,

NaN表示Not a Number,當無法計算結果時用NaN表示,

Infinity表示無限大,當數值超過了JavaScript的Number所能表示的最大值時,就表示為Infinity

與C/C++不同的一點是(1 + 2) * 5 / 2; // 7.5而不是像C/C++只取整數部分

另外, JavaScript允許對任意數據類型做比較: false == 0; // true false === 0; // false

(2)要特別注意相等運算符==。JavaScript在設計時,有兩種比較運算符:

第一種是==比較,它會自動轉換數據類型再比較,很多時候,會得到非常詭異的結果;

第二種是===比較,它不會自動轉換數據類型,如果數據類型不一致,返回false,如果一致,再比較。

由于JavaScript這個設計缺陷,不要使用==比較,始終堅持使用===比較。

另一個例外是NaN這個特殊的Number與所有其他值都不相等,包括它自己:

NaN === NaN; // false

唯一能判斷NaN的方法是通過isNaN()函數:

isNaN(NaN); // true

(3)null和undefined

null表示一個“空”的值,它和0以及空字符串”不同,0是一個數值,”表示長度為0的字符串,而null表示“空”。

在其他語言中,也有類似JavaScript的null的表示,例如Java也用null,Swift用nil,Python用None表示。但是,在JavaScript中,還有一個和null類似的undefined,它表示“未定義”。

JavaScript的設計者希望用null表示一個空的值,而undefined表示值未定義。事實證明,這并沒有什么卵用,區分兩者的意義不大。大多數情況下,我們都應該用null。undefined僅僅在判斷函數參數是否傳遞的情況下有用。

(4)數組 JavaScript的數組可以包括任意數據類型。例如:var arr=[1, 2, 3.14, ‘Hello’, null, true]; 另一種創建數組的方法是通過Array()函數實現:var arr2=new Array(1, 2, 3);

若索引超出了范圍,返回undefined

(5)對象 JavaScript的對象是一組鍵值對組成的無序集合,例如 var person = { name: ‘Bob’, age: 20, tags: [‘js’, ‘web’, ‘mobile’], city: ‘Beijing’, hasCar: true, zipcode: null };

JavaScript對象的鍵都是字符串類型,值可以是任意數據類型,其中每個鍵又稱為對象的屬性,例如,person的name屬性為’Bob’,zipcode屬性為null。要獲取一個對象的屬性,我們用對象變量.屬性名的方式

(6)變量 變量名是大小寫英文、數字、$_的組合,且不能用數字開頭,變量名也可以用中文,但是,請不要給自己找麻煩。同一個變量可以反復賦值,而且可以是不同類型的變量。這種變量本身類型不固定的語言稱之為動態語言 例如:

var a = 123; // a的值是整數123 a = ‘ABC’; // a變為字符串

JavaScript在設計之初,為了方便初學者學習,并不強制要求用var聲明變量。這個設計錯誤帶來了嚴重的后果:如果一個變量沒有通過var聲明就被使用,那么該變量就自動被聲明為全局變量

i = 10; // i現在是全局變量

在同一個頁面的不同的JavaScript文件中,如果都不用var申明,恰好都使用了變量i,將造成變量i互相影響,產生難以調試的錯誤結果。

為了修補JavaScript這一嚴重設計缺陷,ECMA在后續規范中推出了strict模式,在strict模式下運行的JavaScript代碼,強制通過var申明變量,未使用var申明變量就使用的,將導致運行錯誤。

啟用strict模式的方法是在JavaScript代碼的第一行寫上:

‘use strict’; 這是一個字符串,不支持strict模式的瀏覽器會把它當做一個字符串語句執行,支持strict模式的瀏覽器將開啟strict模式運行JavaScript。

‘use strict’; //如果瀏覽器支持strict模式,下面的代碼將報ReferenceError錯誤: abc = ‘Hello, world’; alert(abc);

(7)字符串 JavaScript的字符串就是用”或”“括起來的字符表示。

ASCII字符可以以 /x## 形式的十六進制表示,例如:

‘/x41’; // 完全等同于 ‘A’

還可以用/u####表示一個Unicode字符

‘/u4e2d/u6587’; // 完全等同于 ‘中文’

多行字符串

由于多行字符串用/n寫起來比較費事,所以最新的ES6標準新增了一種多行字符串的表示方法,用反引號 表示:

這是一個 多行 字符串;

注意:反引號在鍵盤的ESC下方,數字鍵1的左邊:

模板字符串

要把多個字符串連接起來,可以用+號連接:

var name = ‘小明’; var age = 20; var message = ‘你好, ’ + name + ‘, 你今年’ + age + ‘歲了!’; alert(message); 如果有很多變量需要連接,用+號就比較麻煩。ES6新增了一種模板字符串,表示方法和上面的多行字符串一樣,但是它會自動替換字符串中的變量:

var name = ‘小明’; var age = 20; var message = 你好, ${name}, 你今年${age}歲了!;//注意用的是反引號 alert(message);

操作字符串

var s = ‘Hello, world!’;

要獲取字符串某個位置的字符,使用類似Array的下標操作,索引號從0開始:

s[13]; // undefined 超出范圍的索引不會報錯,但一律返回undefined

需要特別注意的是,字符串是不可變的,如果對字符串的某個索引賦值,不會有任何錯誤,但是,也沒有任何效果

var s = ‘Test’; s[0] = ‘X’; alert(s); // s仍然為’Test’

JavaScript為字符串提供了一些常用方法,注意,調用這些方法本身不會改變原有字符串的內容,而是返回一個新字符串

toUpperCase

toUpperCase()把一個字符串全部變為大寫:

var s = ‘Hello’; s.toUpperCase(); // 返回’HELLO’

toLowerCase

toLowerCase()把一個字符串全部變為小寫:

var s = ‘Hello’; var lower = s.toLowerCase(); // 返回’hello’并賦值給變量lower lower; // ‘hello’

indexOf

indexOf()會搜索指定字符串出現的位置:

var s = ‘hello, world’; s.indexOf(‘world’); // 返回7 s.indexOf(‘World’); // 沒有找到指定的子串,返回-1

substring

substring()返回指定索引區間的子串

var s = ‘hello, world’ s.substring(0, 5); // 從索引0開始到5(不包括5),返回’hello’ s.substring(7); // 從索引7開始到結束,返回’world’


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 莱阳市| 囊谦县| 宜宾县| 清河县| 来凤县| 东乡| 保靖县| 昂仁县| 佳木斯市| 海南省| 镇坪县| 图木舒克市| 拉孜县| 孟连| 无为县| 福建省| 伊吾县| 威信县| 阳新县| 六安市| 天等县| 麻阳| 安阳市| 大连市| 华坪县| 荔波县| 成安县| 镶黄旗| 定陶县| 公安县| 绩溪县| 额尔古纳市| 阿城市| 漳州市| 长乐市| 勐海县| 津南区| 抚顺县| 和林格尔县| 呼和浩特市| 定日县|