小東西
1.訪問未初始化的變量
var a;
console.log("The value of a is "+a);// logs "的值未定義"
console.log("The value of b is "+b);// 拋出ReferenceError異常
2.數(shù)據(jù)類型
六種原型數(shù)據(jù)類型(Boolean记劝、null、undefined怒竿、Number录豺、String媒抠、Symbol)以及Object對象
3.數(shù)據(jù)轉(zhuǎn)換
parseInt()和parseFloat()分別用于字符串變?yōu)閿?shù)字的全局方法。//雙引號~
4.對象的值
對象屬性名字可以是任意字符串,包括空串排霉。如果對象屬性名字不是合法的javascript標(biāo)識符,它必須用""包裹。屬性的名字不合法,那么便不能用.訪問屬性值苟耻,而是通過類數(shù)組標(biāo)記("[]")訪問和賦值款筑。
5.函數(shù)的遞歸
function factorial(n){
? if((n==0)||(n==1))
? return1;
? else
? return(n*factorial(n-1));
} ? ?// 用自身遞歸計算階乘
6.閉包
JavaScript允許函數(shù)嵌套颈嚼,并且內(nèi)部函數(shù)可以訪問定義在外部函數(shù)中的所有變量和函數(shù)叫挟,以及外部函數(shù)能訪問的所有變量和函數(shù)。但是健霹,外部函數(shù)卻不能夠訪問定義在內(nèi)部函數(shù)中的變量和函數(shù)。這給內(nèi)部函數(shù)的變量提供了一定的安全性。而且祟敛,當(dāng)內(nèi)部函數(shù)生存周期大于外部函數(shù)時叼架,由于內(nèi)部函數(shù)可以訪問外部函數(shù)的作用域扮饶,定義在外部函數(shù)的變量和函數(shù)的生存周期就會大于外部函數(shù)本身。當(dāng)內(nèi)部函數(shù)以某一種方式被任何一個外部函數(shù)作用域訪問時,一個閉包就產(chǎn)生了。
7.函數(shù)默認參數(shù)是undefined
對象數(shù)組以及字符串
1.創(chuàng)建對象
創(chuàng)建對象
//直接創(chuàng)建
person=new Object();
person.name="bill";
person.age="13";
//函數(shù)構(gòu)造對象
function person(name,age)
{
this.name=name;
this.age=age;
}
var myFather=new person("bill","13");
//對象初始化器
person={name:"bill",age:"13"};
2.常用的APi
1.數(shù)組
concat() //連接數(shù)組
join() //把數(shù)組變?yōu)樽址?默認分隔符為“,”,可以變?yōu)椤?”玖瘸、“.”等等......
pop() //刪除并返回最后一個元素
shift() //刪除并返回第一個元素
unshift(newelement1,newelement2,....,newelementX) //向數(shù)組的開頭添加一個或更多元素,并返回新的長度
push() //在末尾添加一個元素并返回數(shù)組的新長度
reverse() //顛倒數(shù)組中元素的順序
slice(start,end) //提取start到end的數(shù)組值侣诺,原數(shù)組不改變
sort()/sort(sortNumber) //字母順序排序、數(shù)值大小排序
splice(index,howmany,item1,.....,itemX) //如果刪除數(shù)量(howmany)為0就不刪除直接在index后面添加items膳算,item為可選屬性
toSource()?//返回該對象的源代碼
toString()?//把數(shù)組轉(zhuǎn)換為字符串机隙,并返回結(jié)果
3.字符串練習(xí)
// 字符串長度
function stringLength (str) {
var theLength=str.length;
return theLength;
}
// CHONG重復(fù)打印
stringLength('strr');
function repeatStringNumTimes (str,num) {
var result="";
while (num > 0) {
result += str;
num--;
}
return result;
}
repeatStringNumTimes('huang',3);
function repeatStringNumTimes (str,num) {
var array = [];
for (var i = 0; i < num; i++) {
array.push(str)
}
return array.join("");
}
repeatStringNumTimes ('strin',3);
// 字符串去重函數(shù)
function uniqString(str) {
var Arr = str.split("");
var newArr = [];
for (var i in Arr) {
if (newArr.indexOf(Arr[i]) == -1){
newArr.push(Arr[i]);
}
}
var strr = newArr.join("");
return strr;
}
uniqString('wwwooorrrdddd');
// 字符串翻轉(zhuǎn)
function reverseString(str) {
var arr = str.split("");
var reverseArr = arr.reverse();
var strr = reverseArr.join("");
return strr;
}
reverseString('str');
// 去除數(shù)字
function removeNum(str) {
var res;
if (typeof str === 'string') {
res = str.replace(/\d/g, '');
}
else {
res = str ;
}
return res;
}
removeNum('s1t4r3');
//統(tǒng)計字符串出現(xiàn)的數(shù)量
function caculateExistNum(str){
var res = {};
var Arr = str.split('');
Arr.forEach(function (eachChar){
res[eachChar] = res[eachChar] ? res[eachChar] + 1 : 1;
})
var strr = '';
var key = Object.keys(res);
key.forEach(function(eachChar) {
strr = strr? + res[eachChar] + eachChar;
})
return strr;
}
caculateExistNum('strr');