js基礎知識

JS的組成

? ? ? ? ECMAScript(ES) : 負責翻譯,為js的核心痛倚,解釋器蔓涧。

????????DOM?(Document Object Model 文檔對象模型):賦予js操作HTML的能力,document峡继。

????????BOM?(Browser Object Modal 瀏覽器對象模型):賦予js操作瀏覽器的能力,window雇卷,不兼容不建議使用鬓椭。

變量類型?

? ? ? ?5種基本類型:unll,undefined关划,boolean,number翘瓮,string

?????? 1種復雜類型:object

?????? 5種引用類型:Array贮折,Object,F(xiàn)unction资盅,Date调榄,RegExp

?????? 3種基本包裝類型:Boolean踊赠,Number,String

?????? 2種單體內置對象:Global每庆,Math

?????? undefined:沒有定義的變量筐带,var聲明沒有初始化的變量

? ? ? ?typeof?可查看變量類型,一個變量應只存一個類型的數(shù)據(jù)缤灵。

var a = 12;

// console.info(typeof a);? ? ? ? number

a = 'dwefeyui';

// console.info(typeof a);? ? ? ? string

a = true;

// console.info(typeof a);? ? ? ? boolean

a = function(){

? ? console.info('frgctgy');

};

// console.info(typeof a)? ? ? ? function

a = document;

// console.info(typeof a);? ? ? ? object

var b;

// console.info(typeof b);? ? ? ? undefined

// 1.真的未定義

// 2.雖然定義但是沒有給東西

顯式類型轉換(強制類型轉換)

????parseInt()?可將字符串轉換為數(shù)字(整數(shù))伦籍,parseFloat()可將字符串轉換為數(shù)字(小數(shù));

? ? var a = 'abc',?b = '20.5632';

? ? // console.info(parseInt(a)); ? ? ?NaN ? ?

? ? // console.info(parseInt(b)); ? ? ?20

? ? var a = '3.5';?

? ??console.info(parseFloat(a));? ? ? ?//3.5

? ? isNaN()?判斷該元素是否為NaN腮出,NaN表示(Not a Numer)帖鸦,兩個NaN之間不相等;

隱式類型轉換

雙等?==? 先轉換類型胚嘲,再進行比較作儿;(值相等,等式成立)

三等===? ?不轉換類型馋劈,直接比較攻锰;(值和類型必須相等,等式成立)

? ? ? ? var a = 5;

? ? ? ? var b = '5';

? ? ? ? // console.info(a==b); ? ? ?true

? ? ? ?//??console.info(a===b); ? ? //false

???減法也可做隱式類型轉換妓雾,但加法不行娶吞。

? ? ? ? var a = '12';

? ? ? ? var b = '5';

? ? ? ? // console.info(a+b); ? ?//125

? ? ? ? // console.info(a-b); ? ? ? //7

變量作用域

???????局部變量:只能在定義他的函數(shù)里面使用;

???????全局變量:在任何地方都能用君珠;

? ? ? ?閉包:子函數(shù)可以使用父函數(shù)的局部變量寝志。

? ? ? ?匈牙利命名法:類型前綴(僅給變量取名時需要),首字母大寫?

運算符

?????? +加策添、-減材部、*乘、/除唯竹,%求模(余數(shù))乐导。(隔行變色,秒轉時間)

賦值

??????? =浸颓、+=物臂、-=、*=产上、/=棵磷、%=。(i+=1等效于i=i+1)

邏輯

?????? &&并且晋涣、||或者仪媒、!否谢鹊;運算優(yōu)先級:括號算吩;

程序流程控制

????????判斷:if留凭、switch、偎巢?:三元目()運算符

? ? ?switch (變量) {

? ? ? ?? ?case 值1:

? ? ? ? ? ? 語句1 ;

? ? ? ?? ??? ?break;

? ? ? ? case 值2:

? ? ? ? ? ? 語句2;

? ? ? ?? ??? ?break;

? ? ? ?? ?default:

? ? ? ?? ??? ?語句n;

? ? ? ?? ??? ?break;

? ? ? };

? ? ? 條件?語句1:語句2;

?循環(huán):for蔼夜、while;跳出:break(中斷整個循環(huán))压昼、continue(中斷本次循環(huán));

? ? ? ?真和假

???????真(true):非0數(shù)字求冷、非空字符串、非空對象

???????假(false):數(shù)字0巢音、空字符串遵倦、null(空對象)、undefined

? ? ? ?JSON

???????和數(shù)組的區(qū)別:數(shù)組用 [ ]官撼,下標為數(shù)字梧躺,有l(wèi)ength,故循環(huán)時采用0 - length這種方法傲绣;

????????????????????????????? JSON用 { }掠哥,下標為字符串,沒有l(wèi)ength秃诵,故循環(huán)時用for in這種方法续搀;

? ? ? ? var json = {

? ? ? ? ?? ?a:12,

? ? ? ? ?? ?b:5,

? ? ? ? ?? ?c:'afy'

? ? ? ? };

? ? ? ? var arr = [12,5,'add'];

? ? ? ??//json.a++ ? ? ? ? //可像變量一樣操作

? ? ? ? console.info(json.a);?

? ? ? ?for(var i = 0;i<arr.length;i++){? ? ? ? ?

? ? ? ? ? ? ? ? console.info('第' + i + '個東西' + json[i]);

? ? ? ?} ? ??

? ? ?for(var i in json){

? ? ? ? ? ? ? ? console.info('第' + i + '個東西' + json[i]);

??????}

JS深入

函數(shù)返回值

? 將函數(shù)返到函數(shù)外面,為函數(shù)的執(zhí)行結果菠净,可做運算禁舷,一個函數(shù)應該只返回一種值。

? ? ? ? function show(a,b){

? ? ? ? ?? ?return a + b;

? ? ? ? }

? ? ? ? console.info(show(3,5));??

函數(shù)傳參

????????arguments?[ ] (可變參毅往,不定參):參數(shù)個數(shù)可變牵咙,為一個數(shù)組。

??????? css中傳兩個參數(shù)為獲取樣式攀唯,三個參數(shù)為設置樣式洁桌,一般給參數(shù)取名,增加可讀性侯嘀。

? ? ? ? function css (obj,name,value){

? ? ? ? ?? ?if(arguments.length == 2){ ? ? ?//獲取

? ? ? ? ? ? ? ? ?return obj.style[name]; ? ?

? ? ? ? ? ? ? ? ?//obj==arguments[0]另凌,以此類推

? ? ? ? ?? ?}else{

? ? ? ? ?? ??? ?obj.style[name] = value;

? ? ? ? ?? ?}?

? ? ? ? }

? ? ? ? window.onload = function(){

? ? ? ? ?? ?var oDiv = document.getElementById('div1');

? ? ? ? ?? ?// alert(css(oDiv,'width'));

? ? ? ? ?? ?css(oDiv,'background','green');

? ? ? ? }

getComputedStyle ()?用于獲取非行間樣式(FireFox、Chrome戒幔、Safari)吠谢、

currenStyle ()? ?也可(IE、Opera)诗茎,style用于獲取行間樣式囊卜。兼容性問題通常用if else處理

? ? ? ? <style>

?? ??? ?#div1{

?? ??? ??? ?width: 200px;

?? ??? ?}

?? ?</style>

?? ?<script>

? ? ? ? window.onload = function(){

? ? ? ? ?? ?var oDiv = document.getElementById('div1');

? ? ? ? ?? ?console.log(getComputedStyle(oDiv, false).width)

? ? ? ? ? ?}

? ? ? ? ?</script>

函數(shù)封裝

? 將需要多次用到的函數(shù)進行封裝方便調用。

? ? ? ? function getStyle(obj,name){ ? ? ? ? ? ? ? //封裝

? ? ? ? ?? ?if(ojb,currentStyle){

? ? ? ? ?? ??? ?return obj.currentStyle[name];

? ? ? ? ?? ?}else{

? ? ? ? ?? ??? ?return obj.getComputedStyle(obj, false)[name];

? ? ? ? ?? ?}

? ? ? ? }

? ? ? ? window.onload = function(){

? ? ? ? ?? ?var oDiv = document.getElementById('div1');

? ? ? ? ?? ?alert(getStyle(oDiv,'width'));

? ? ? ? }

上述getStyle()只能用于取單一的樣式错沃,如:width,height栅组;無法取出border等含有多個元素的樣式,

需寫成border-color等樣式枢析。

數(shù)組基礎

???有兩種寫法玉掸,一般采用第一個

? ? var a = [1,2,3];

? ? var a = new Array(1,2,3);

?屬性:length,可以用于獲取數(shù)組長度醒叁,也可設置司浪,一個數(shù)組中應該只存一種數(shù)據(jù)類型。

?????????添加把沼,刪除元素:push()啊易,從尾部添加;unshift()饮睬,從頭部添加租谈;pop(),從尾部刪除捆愁;shift()割去,從頭部刪除;

?????????刪除?splice(起點昼丑,長度)呻逆;插入/替換 splice(起點,長度菩帝,元素)咖城。

?? ?var arr = [1,2,3,4,5,6];

?? ?// arr.splice(2,3);

?? ?arr.splice(2,0,'a','b');?

?? ?console.info(arr);

???數(shù)組連接:concatt ( );?分隔符:join ( ) ;

? ? ? ? var a = [1,2,3];

? ? ? ? var b = [4,5,6];

? ? ? ? console.info(a.concat(b));


?? ?var arr = [1,2,3,4,5,6];

?? ?console.info(arr.join('--'));

數(shù)組排序:sort ( ) ,但通常將數(shù)組當做字符串來比較呼奢,導致排序數(shù)字時亂序宜雀。

?? ?var arr = [465,255,30,66,5,67];

?? ?arr.sort(function(n1,n2){ ? ? //比較函數(shù) ? ?

? ? ? ? ? ? ?return n1-n2;

? ? ? ? });

? ?consoel.info(arr);

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市控妻,隨后出現(xiàn)的幾起案子州袒,更是在濱河造成了極大的恐慌,老刑警劉巖弓候,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件郎哭,死亡現(xiàn)場離奇詭異,居然都是意外死亡菇存,警方通過查閱死者的電腦和手機夸研,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來依鸥,“玉大人亥至,你說我怎么就攤上這事。” “怎么了姐扮?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵絮供,是天一觀的道長。 經常有香客問我茶敏,道長壤靶,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任惊搏,我火速辦了婚禮贮乳,結果婚禮上,老公的妹妹穿的比我還像新娘恬惯。我一直安慰自己向拆,他們只是感情好,可當我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布酪耳。 她就那樣靜靜地躺著浓恳,像睡著了一般。 火紅的嫁衣襯著肌膚如雪葡兑。 梳的紋絲不亂的頭發(fā)上奖蔓,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天,我揣著相機與錄音讹堤,去河邊找鬼吆鹤。 笑死,一個胖子當著我的面吹牛洲守,可吹牛的內容都是我干的疑务。 我是一名探鬼主播,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼梗醇,長吁一口氣:“原來是場噩夢啊……” “哼知允!你這毒婦竟也來了?” 一聲冷哼從身側響起叙谨,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤温鸽,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后手负,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體涤垫,經...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年竟终,在試婚紗的時候發(fā)現(xiàn)自己被綠了蝠猬。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情键畴,我是刑警寧澤匆绣,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布驻右,位于F島的核電站,受9級特大地震影響犬绒,放射性物質發(fā)生泄漏旺入。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一凯力、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧礼华,春花似錦咐鹤、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至扮匠,卻和暖如春捧请,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背棒搜。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工疹蛉, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人力麸。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓可款,卻偏偏與公主長得像,于是被迫代替她去往敵國和親克蚂。 傳聞我的和親對象是個殘疾皇子闺鲸,可洞房花燭夜當晚...
    茶點故事閱讀 44,960評論 2 355

推薦閱讀更多精彩內容