ECMAScript 知識點大雜燴:
1、javascript是一種弱型別語言,沒有編譯階段,一個變數可以隨意賦值,賦什么型別的值都行,
2、在JS當中,當一個變數沒有手動賦值的時候,系統默認賦值 undefined,undefined 在 JS 中是一個具體存在值.
3、JS 中的變數是一種弱型別的,那么函式應該怎么定義呢?
語法格式:
第一種方式:
function 函式名(形式引數串列){
函式體;
}
第二種方式:
函式名 = function(形式引數串列){
函式體;
}
JS中的函式不需要指定回傳值型別,回傳什么型別都行,
在JS當中,函式的名字不能重名,當函式重名的時候,后宣告的函式會將之前宣告的同名函式覆寫,
4、全域變數:
在函式體之外宣告的變數屬于全域變數,全域變數的生命周期是:
瀏覽器打開時宣告,瀏覽器關閉時銷毀,盡量少用,因為全域變數會一直在瀏覽器的記憶體當中,耗費記憶體空間,
能使用區域變數盡量使用區域變數,
區域變數:
在函式體當中宣告的變數,包括一個函式的形參都屬于區域變數,
區域變數的生命周期是:函式開始執行時區域變數的記憶體空間開辟,函式執行結束之后,區域變數的記憶體空間釋放,
區域變數生命周期較短,
5、當一個變數宣告的時候沒有使用 var關鍵字,那么不管這個變數是在哪里宣告的,都是全域變數,
6、JS 中資料型別:
原始型別:Undefined、Number、String、Boolean、Null
參考型別:Object以及Object的子類
7、JS 中有一個運算子叫做typeof,這個運算子可以在程式的運行階段動態的獲取變數的資料型別,
typeof 運算子的語法格式:
typeof 變數名
typeof運算子的運算結果是以下6個字串之一:注意字串都是全部小寫,
"undefined"
"number"
"string"
"boolean"
"object"
"function"
null屬于Null型別,但是typeof運算子的結果是"object"
8、在JS當中比較字串是否相等使用“==”完成,沒有equals,
9、資料型別:
1)Undefined 型別只有一個值,這個值就是 undefined ,當一個變數沒有手動賦值,系統默認賦值 undefined 或者也可以給一個變數手動賦值 undefined,
2)Number 型別包括哪些值?
-1 0 1 2 2.3 3.14 100 .... NaN Infinity(整數、小數、正數、負數、不是數字、無窮大都屬于Number型別)
isNaN() : 結果是true表示不是一個數字,結果是false表示是一個數字,
parseInt ( ) 函式
parseFloat ( ) 函式
Math.ceil ( ) 函式(Math是數學類,數學類當中有一個函式叫做ceil(),作用是向上取整)
關于NaN (Not a Number,不是一個數字,但屬于Number型別),什么情況下結果是一個NaN呢?
運算結果本來應該是一個數字,最后算完不是一個數字的時候,結果是NaN.
3)JS 中的布爾型別永遠都只有兩個值:true 和 false,
在Boolean型別中有一個函式叫做:Boolean(),
語法格式:
Boolean(資料)
Boolean()函式的作用是將非布爾型別轉換成布爾型別,
<script type="text/javascript">
// 規律:“有"就轉換成true,"沒有"就轉換成false.
alert(Boolean(1)); // true
alert(Boolean(0)); // false
alert(Boolean("")); // false
alert(Boolean("abc")); // true
alert(Boolean(null)); // false
alert(Boolean(NaN)); // false
alert(Boolean(undefined)); // false
alert(Boolean(Infinity)); // true
</script>
4)String型別:
在JS當中字串可以使用單引號,也可以使用雙引號,
var s1 = 'abcdef';
var s2 = "test";
在JS當中,怎么創建字串物件呢?
兩種方式:
第一種:var s = "abc";
第二種(使用JS內置的支持類String): var s2 = new String("abc");
需要注意的是:String是一個內置的類,可以直接用,String的父類是Object,
關于String型別的常用屬性和函式?
常用屬性:
length 獲取字串長度
常用函式:
indexOf 獲取指定字串在當前字串中第一次出現處的索引
lastIndexOf 獲取指定字串在當前字串中最后一次出現處的索引
replace 替換
substr 截取子字串
substring 截取子字串
toLowerCase 轉換小寫
toUpperCase 轉換大寫
split 拆分字串
<script type="text/javascript">
// replace (注意:只替換了第一個),繼續呼叫replace方法,就會替換第“二”個.
alert("name=value%name=value%name=value".replace("%","&")); // name=value&name=value%name=value
// 想全部替換需要使用正則運算式.
alert("name=value%name=value%name=value".replace("%","&").replace("%", "&")); // name=value&name=value&name=value
// 考點:經常問 substr和substring的區別?
// substr(startIndex, length)
alert("abcdefxyz".substr(2,4)); //cdef
// substring(startIndex, endIndex) 注意:不包含endIndex
alert("abcdefxyz".substring(2,4)); //cd
</script>
5)在JS當中怎么定義類?怎么new物件?
定義類的語法:
第一種方式:
function 類名(形參){
}
第二種方式:
類名 = function(形參){
}
創建物件的語法:
new 構造方法名(實參);
Object類包括哪些屬性?
prototype屬性(常用的,主要是這個):作用是給類動態的擴展屬性和函式,
constructor屬性
<script type="text/javascript">
// 這種方式就表示把sayHello當做一個類來創建物件.
var obj = new sayHello(); // obj是一個參考,保存記憶體地址指向堆中的物件.
// 定義一個學生類
function Student(){
alert("Student.....");
}
// 當做普通函式呼叫
Student();
// 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, "zhangsan", 30);
// 訪問物件的屬性
alert(u1.sno);
alert(u1.sname);
alert(u1.sage);
// 訪問一個物件的屬性,還可以使用這種語法
alert(u2["sno"]);
alert(u2["sname"]);
alert(u2["sage"]);
//定義類的另一種語法:
Product = function(pno,pname,price){
// 屬性
this.pno = pno;
this.pname = pname;
this.price = price;
// 函式
this.getPrice = function(){
return this.price;
}
}
var xigua = new Product(111, "西瓜", 4.0);
var pri = xigua.getPrice();
alert(pri); // 4.0
// 可以通過prototype這個屬性來給類動態擴展屬性以及函式
Product.prototype.getPname = function(){
return this.pname;
}
// 呼叫后期擴展的getPname()函式
var pname = xigua.getPname();
alert(pname)
// 給String擴展一個函式
String.prototype.suiyi = function(){
alert("這是給String型別擴展的一個函式,叫做suiyi");
}
"abc".suiyi();
</script>
10、null NaN undefined這三個值有什么區別 :
<script type="text/javascript">
// == 是等同運算子
alert(1 == true); // true
alert(1 === true); // false
// null NaN undefined 資料型別不一致.
alert(typeof null); // "object"
alert(typeof NaN); // "number"
alert(typeof undefined); // "undefined"
// null和undefined可以等同.
alert(null == NaN); // false
alert(null == undefined); // true
alert(undefined == NaN); // false
/*
在JS當中有兩個比較特殊的運算子
==(等同運算子:只判斷值是否相等)
===(全等運算子:既判斷值是否相等,又判斷資料型別是否相等)
*/
alert(null === NaN); // false
alert(null === undefined); // false
alert(undefined === NaN); // false
</script>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/421838.html
標籤:其他
上一篇:在js中如何區分深拷貝與淺拷貝?
