閱讀479 返回首頁    go 阿裏雲 go 技術社區[雲棲]


js 數據類型及常用函數

JavaScript 對大小寫是敏感的。js中的注釋同c語言相同。
變量是弱類型的,與 Java 和 C 不同,定義變量時隻用 var 運算符。

在使用變量前可以不聲明。如var sTest = "hello ";sTest2 = sTest + "world";

每條語句結尾的分號可有可無。

1.數字

允許使用科學計數法,var fNum = 5.618e7;
8進製數以0開頭,var iNum = 070;  //070 等於十進製的 56
16進製數以0x開頭,var iNum = 0x1f;  //0x1f 等於十進製的 31
注意:所有數學運算返回的都是十進製結果。

2.字符串

單雙引號都可以
var sColor1 = "red";
var sColor2 = 'red';

其他類型到字符串,以double為例: var str = doubleVar.toString();

多個字符串可以用 加號 拚接。如 str3=str1+"hello"+str2;

2.1常用成員函數/變量

substring(start,end) 
下標從0開始,截取字符串為[start,end)。
split(regex)
根據正則分割字符串,返回的是字符串數組。
indexOf(text)
查找子串的位置。<0表示不存在。
length
長度,它是字符串類的成員變量,不是函數。

charCodeAt(i)

取得對應位置字符的編碼。

字符串可以直接用 關係符比較,如 大於、小於、等於。規則為字典序。

2.2字符串轉byte[]

js中沒有char類型。

string是以utf-8編碼的。可以利用String.charCodeAt(i)方法取得對應位置字符的編碼。於是string轉byte[]就可以這麼寫:

<script>
var arr=[];
var str="hi123";
//轉byte[]
for(var i=0;i<str.length;i++)
	arr.push(str.charCodeAt(i));
console.log(arr);//[104, 105, 49, 50, 51]
//還原
console.log(String.fromCharCode(104, 105, 49, 50, 51));//hi123
</script>

對應的,java代碼可以直接用這個byte[]:

byte arr[]={104, 105, 49, 50, 51};
String a=new String(arr);
System.out.println(a);//hi123

2.3 正則表達式

string.match()方法返回一個數組,盛放的是得到匹配的字符串。

var arr="abc1d2.3rtr 45".match(/\d+\.*\d*/g);
//返回1 2.3 45
注意match()函數的形參,它想要匹配的是整數或小數。 /regularExp/g ,後麵的g不可少,表示global全局匹配。

3.布爾值

  var mark = true;

4.類型轉換

typeof(obj_1);返回對象的類型。
instanceof();在使用 typeof 運算符時采用引用類型存儲值會出現一個問題,無論引用的是什麼類型的對象,它都返回 "object"。ECMAScript 引入了另一個 Java 運算符instanceof 來解決這個問題。

字符串到數字有parseInt() 和 parseFloat()。隻有對 String 類型調用這些方法,它們才能正確運行,對其他類型返回的都是 NaN。

5.數組

 var arr = new Array(2);
    arr[0] = i1;
    arr[1] = i2;

成員變量

length   //數組的元素數目

成員函數

toString() //返回字符串,類似java的toString()。

indexOf()  //返回元素在數組中的下標,若沒有則是負數。針對string類型的元素可以直接用。

reverse()//對數組中元素逆序排列
sort() //對數組的元素進行排序。支持對自定義結構體的排序,因為它有一個重載形式,傳入的是比較函數,見下:

//arr數組中盛放的結構體都有name這個字段。
function mayComparator(a,b){
	if(a.name>b.name)
		return 1;
	if(a.name == b.name)
		return 0;
	return -1;
}
arr.sort(mayComparator);

push(element) //向數組末尾追加元素

splice(index,howmany)     //刪除 [index,index+howmany]這些元素
splice(index,howmany,item1,.....,itemX)     //刪除 [index,index+howmany]這些元素並在刪除的元素位置插入若幹個元素

<script type="text/javascript">

var arr = new Array(6)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"
arr[3] = "James"
arr[4] = "Adrew"
arr[5] = "Martin"

document.write(arr + "<br />")  //George,John,Thomas,James,Adrew,Martin
arr.splice(2,3,"William")
document.write(arr)			//George,John,William,Martin

</script>

6.對象

還可以為對象創建成員函數,見下:
若想刪除對象的某個屬性,可以用 delete 操作符。如 delete student.grade後,再發ajax時就沒有這個字段了。
將對象轉為string,可用JSON.stringify(obj)。使用場景比如websocket發送string內容。

7.==和===的區別

7.1.高級類型

高級類型是指Array,Object等。
==和===都進行“指針地址”比較。

7.2.基礎類型與高級類型

==
將高級轉化為基礎類型,然後進行“值”比較。
===
因為類型不同,結果為false。

7.3.基礎類型

js中字符串也是基礎類型。
==與===都進行值比較。
示例代碼:
var str1='hi';
var str2="hi";
console.log(str1==str2);//true
console.log(str1===str2);//true
console.log("*************");
var obj1={name:'xiaoMing',age:13};//false
var obj2={name:'xiaoMing',age:13};//false
console.log(obj1==obj2);
console.log(obj1===obj2);
console.log("*************");
str1='123';
var num1=123;
console.log(str1==num1);//true
console.log(str1===num1);//false
console.log("*************");

最後更新:2017-04-03 05:40:17

  上一篇:go 多線程對信號的接受處理
  下一篇:go [麵試題]虛函數和純虛函數