目錄
一、JS的數據類型
(一)運算符typeof
JS中有一個運算符叫做typeof,這個運算符可以在程序的運行階段動態的獲取變量的數據類型。
語法格式:
Typeof 變量名
(二)Js中比較
JS當中比較字符串是否相等使用“==”完成,沒有equals,這點是和JAVA的區別。(這一點以後我會寫博客【JAVA中equals和==的區別】)
Function sum(a,b){
if(typeof a=="number"&& typeof b =="number"){
return a+b;
}else{
alert("請輸入數字");
}
}
(三)undefined類型
Undefined類型只有一個值,這個值就是Undefined,當一個變量沒有手動賦值,系統默認Undefined,或者也可以手動給一個變量手動賦值undefined;
Var I;//undefined
Var k = undefined;//undefined
Var y = "undefined";//"undefined"
其中i和k是相同的,但是Y是不相同的。
(四)Number類型
(1)Number類型包括那些值?
-1 0 1 2 3.12 。。。 NaN Infinity
這個和JAVA相比較,JAVA需要用6種類型來表示,而JS只需要一個Number即可,
這個和JAVA相比較,JAVA需要用6中數據類型來表示,而JS只需要一個Number即可。
//關於NaN(表示 Not a Number,不是一個數字,但屬於Number類型)
//什麼情況下結果是NaN呢?
//運算結果本來應該是一個數字,最後算完不是一個數字的時候,結果是NaN
Infinity表示無窮大(在除數爲0的時候,結果爲無窮大)。
(2)相關函數
1)isNaN函數
結果是true表示不是一個數字,結果是false表示是一個數字。
Function sum(a,b){
If(isNaN(a)||isNaN(b)){
Alert("請輸入數字");
Return;
}
Return a+b;
}
2) paraseInt()函數,可以將字符串轉換成小數而且取整
Alert(parseInt("3.99999"))//3
3) paraseFloat()函數
Alert(parseFloat("3.2"+1))//4.2
4) Math.ceil()向上取整
Alert(math.ceil("2.1"));//3
(五)Boolean類型
1)、JS中的布爾類型永遠只有兩個值true和false(這一點和JAVA是一樣的)。
2)、在boolean類型中有一個函數叫做:Boolean();
語法格式:
Boolean(數據)
Boolean()函數的作用是將非布爾類型轉換成布爾類型。
If(username){
Alert( username+"歡迎你")
} else {
Alert("username不能爲空")
}
(if 後面自動轉換成boolean)
Boolean()函數,有就轉換成真,沒有就轉換成false
(六)string類型
1、在JS中字符串可以使用單引號,也可以使用雙引號。
Var s ='test';
Var s1 ="test";
2、在JS當中,怎麼創建字符串對象呢?
兩種方式:
第一種: var s = "abc";
第二種(使用JS內置的支持類string), var s2 = new String("abc");
需要注意的是:string是一個內置類,可以直接用,string的父類是object
3、(重點)無論是大還是小,他們的屬性和函數都是通用的。
4、關於string類型的常用屬性和函數?
常用屬性:
Length 獲取字符串長度
常用函數:
Indexof 獲取指定字符串在當前字符串中第一次出現處的索引
lastIndexof 獲取指定字符串在當前字符串中最後一次出現處的索引
Replace 替換(只替換一次,如果想都替換可以使用正則表達式)
Substr 截取字符串
subString 截取子字符串
tolowerCase 轉換小寫
toUpperCase 轉換大寫
split拆分字符串
//考點:經常問substr和substring的區別?
//substr(startIndex,length)
Alert("abcdefxyz",substr(2,4));//cdef
//substring(startIndex,endIndex) 注意:不包含endIndex
Alert("abcdefxyz",substring(2,4));//cd
//小string(屬於原始類型string)
Var x ="abc";
Alert(typeof x); //"string"
//大string(屬於object類型)
Var y = new string("abc");
Alert(typeof y); //"object"
(七)object類型
1) object類型時所有類型的超類,自定義的任何類型,默認繼承Object。
2)Object類包括哪些屬性?
prototype屬性(常用),作用是給類動態的擴展屬性和函數。
constructor屬性
3)Java中Object常用方法有哪些?
Tostring,equals,hashcode
4)Object類包括哪些函數?
Tostring();
Valueof();
toLocaleString()
5)在JS當中定義的類默認繼承Object,會繼承Object類中所有的屬性以及函數,
換句話說,自己定義的類中也有Prototype屬性。
6)在JS當中怎麼定義類?怎麼New對象?
第一種方式:
Function 類名(形參){
}
第二種方式:
類名=function(形參){
}
New 對象?
//Var 對象名 =new 類名();
New 構造方法名(實參);//構造方法名和類名一致
深入理解Object
//JS 中的類的定義,同時又是一個構造函數的定義
//在jS中類的定義和構造函數的定義是放在一起完成的。
Function User(a,b,c){
//a,b,c 屬於局部變量
//聲明屬性(this表示當前對象)
//User類中三個屬性:sno/sname/sage
This.sno=a;
This.sname=b;
This.sage=c;
}
//創建對象
Var u1 = new User(111,"張三",23)
//訪問對象的屬性
Alert(u1.sno);
Alert(u1.sname);
Alert(u1.sage);
//給String 擴展一個函數
String.prototype.suiyi=function(){
Alert("這是給String類型擴展的一個函數,叫做suiyi");
}
Abc.suiyi();
二、JAVA中的數據類型
基本數據類型:
基本數據類型共有八種,其中六種數據類型與兩個非數值類型。基本數據信息如下:
那麼Java中string數據什麼數據類型?
string是屬於引用數據類型,因爲string是一個類。
三、JS 和JAVA的比較:
這倆面JS一共有三個構造方法。這一切都是因爲JAVA是強類型,JS是弱類型語言導致的。
(一)Null NaN undefined的區別?
Null //boject
NaN //number
Undefined//undefined
(1)數據類型不一樣
(2)null和undefined可以等同
Alert(null == NaN); //false
Alert(null == undefined); //true
Alert(undefined == NaN); //false
//在JS當中有兩個比較特殊的運算符
// == (等同運算符)
// ===(全等運算符,既判斷值是否相等,又判斷數據類型是否相等)
總之,JAVA和JS的數據類型,因爲JAVA是強類型語言,所以分的會更細一點,JS是弱類型語言,也就更靈活。