js1

一.瀏覽器組成:

1.shell

2.內(nèi)核:

?渲染引擎(語法規(guī)則和渲染)

?JS引擎

?其他模塊

二.JS的特點(diǎn):

1.單線程

2.解釋性語言

解釋性語言優(yōu)點(diǎn):(不需要編譯成文件)跨平臺(tái)

缺點(diǎn):效率低

編譯性語言優(yōu)點(diǎn):效率高

缺點(diǎn):不跨平臺(tái)

三.JS三大部分

ECMAScript???DOM???BOM

四.如何引入JS

頁面內(nèi)嵌標(biāo)簽

外部引入“l(fā)ocation”>

(為符合web標(biāo)準(zhǔn)(w3c標(biāo)準(zhǔn)中的一項(xiàng))結(jié)構(gòu)攒磨、樣式司顿、行為相

分離管跺,會(huì)采用外部引入)

該標(biāo)簽有如下六個(gè)屬性:

1.async:表示應(yīng)該立即下載腳本,但不妨礙頁面中其他操作津辩,如下載其他資源(立即下載,但不能保證先后順序執(zhí)行,要確保文件獨(dú)立性)

2.charset:很少使用坡椒,瀏覽器會(huì)自動(dòng)忽略

3.defer:表示腳本可以延遲到文檔完全被解析和顯示后執(zhí)行(立即下載就缆,但延遲執(zhí)行)

4.language:已廢棄

5.src:表示包含要執(zhí)行代碼的外部文件

6.type:可以看成是language的替代屬性帖渠,表示編寫代碼使用的腳本語言類型,通常我們使用“text/javascript”

注意:

defer=”defer”

async=”async”

嵌入代碼與外部文件

外部文件的優(yōu)點(diǎn):

1.可維護(hù)性高

2.可緩存:即當(dāng)兩個(gè)頁面加載同一內(nèi)容竭宰,外部文件只需下載一次

3.未來適應(yīng)性高

三.js基本語法

1.變量:

js采用單一var原則空郊,聲明賦值相分解份招,為提高效率,盡量在同一處聲明所有變量

2.值類型----數(shù)據(jù)類型

?不可改變的原始值(棧數(shù)據(jù))

Number,String,Boolean,undefined,null

?引用值(堆數(shù)據(jù))

array, object, function

3.js規(guī)則:

js語法錯(cuò)誤會(huì)引發(fā)后續(xù)代碼終止狞甚,但不會(huì)影響其它js代碼塊

字符串比較:如果第一個(gè)字符比較成功脾还,則不進(jìn)行下一位的比較。

4.&& ||入愧!邏輯運(yùn)算符:

&&短路語句:全真為真鄙漏,否則為假

var

a=1+1&&123;

&&兩側(cè)為表達(dá)式棺蛛,計(jì)算后轉(zhuǎn)換為bool類型怔蚌,進(jìn)行&&運(yùn)算

fn&&fun(fn)用于判斷fn是否有值

||有一個(gè)真即為真,全假為假:

var a=1||2旁赊;

第一個(gè)表達(dá)式為真就不往后看

桦踊!用于取反

!终畅!可用于查看布爾值

& |按位與或

Eg:

if(2>0>0)=true>0

5.Typeof():返回值都是字符串類型

六種數(shù)據(jù)類型:

NumberstringBooleanundefinedobjectfunction

6.類型轉(zhuǎn)換:

1.隱式類型轉(zhuǎn)換

2.顯示類型轉(zhuǎn)換

3.不發(fā)生類型轉(zhuǎn)換

一.隱式類型轉(zhuǎn)換:

isNaN ()

++/—+/-(一元正負(fù))

+

*/%

&& ||籍胯!

<><=>=

== !=

二.顯式類型轉(zhuǎn)換:

Number(mix)

parseInt(string,radix)

parseFloat(string)

toString(radix)

String(mix)

Boolean()

Number()轉(zhuǎn)換結(jié)果

true/false--->1/0,數(shù)字字符串离福,null--->0;undefined--->NaN杖狼;

parseInt():parseInt(目標(biāo)數(shù),基底)妖爷;

將目標(biāo)數(shù)以基底為進(jìn)制轉(zhuǎn)換為十進(jìn)制轉(zhuǎn)成整形

從第一位開始蝶涩,到非數(shù)字為截止,轉(zhuǎn)換成數(shù)字

不可以轉(zhuǎn)bool類型

parseFloat()

目標(biāo)數(shù)轉(zhuǎn)換成浮點(diǎn)數(shù)

找到第一個(gè)小數(shù)點(diǎn)后到第一個(gè)非數(shù)字位為止

String()變成字符串

Boolean()結(jié)果為false

undefind/NaN/""/0/null/false(undefined==null

toString()

undefined/null不能用toString

toString(基底)將目標(biāo)數(shù)轉(zhuǎn)換成基底進(jìn)制后變?yōu)樽址?/b>

NaN不等于任何東西絮识,包括自身绿聘,在判斷時(shí)用字符串比較(NaN==”NaN”

undefined==null,二者均不大于0次舌,不小于0.不等于0

===:絕對(duì)等于

toFixed():科學(xué)記數(shù)法四舍五入保留有效數(shù)字

四.函數(shù):

函數(shù)聲明:function_name(argument) {

//body...

}

函數(shù)表達(dá)式

1.命名函數(shù)表達(dá)式vartext=function text() {

// body...

}

2.匿名函數(shù)表達(dá)式var demo=function () {

//body...

}

五.?dāng)?shù)組:

arr.length()數(shù)組長度

arguments.length()實(shí)參長

text.length()形參長

六.預(yù)編譯:

1.變量聲明提升

2.函數(shù)聲明整體提升

imply global:未經(jīng)聲明就賦值為暗示全局變量

此對(duì)象為window所有

eg:

a=100;

var a=b=123;

一切聲明的全局變量全是window屬性

局部變量預(yù)編譯

1.創(chuàng)建AO對(duì)象

2.找形參和變量聲明熄攘,將形參和變量聲明作為屬性名,值為undefined

3.將實(shí)參和形參同一

4.找函數(shù)聲明彼念,值賦為函數(shù)體

全局變量預(yù)編譯GO{}

GO===window

所以訪問全局可以不用打window

1.創(chuàng)建GO對(duì)象

2.找變量聲明

3.找函數(shù)賦值函數(shù)體

七.閉包:

當(dāng)內(nèi)部函數(shù)被保存到外部時(shí)挪圾,將會(huì)生成閉包。閉包會(huì)導(dǎo)致原有作用域鏈不釋放国拇,造成內(nèi)存泄露洛史。

eg:functionadd() {

var num=0;

functiona() {

document.write(++num);

}

return a;

}

var myadd=add();

myadd();

myadd();

此時(shí)a函數(shù)中保留了add函數(shù)之前的go和ao(這是在a函數(shù)定義是就存在的)

所以當(dāng)myadd被調(diào)用時(shí),訪問的是同一個(gè)num

八.立即執(zhí)行函數(shù)(function (形參) {}(實(shí)參)):立即執(zhí)行酱吝,執(zhí)行后立馬銷毀

仿佛是專門用來解決閉包問題的

eg:

var sum=(function (a,b) {

returna+b;

}(1,2));

只有表達(dá)式才能被執(zhí)行(聲明不可以執(zhí)行也殖!)

+-!()可以進(jìn)行隱式類型轉(zhuǎn)換將聲明轉(zhuǎn)換成表達(dá)式,所以(function(a,b){})(a,b)也叫立即函數(shù)(不標(biāo)準(zhǔn)形態(tài))

數(shù)學(xué)括號(hào)優(yōu)先級(jí)大于執(zhí)行括號(hào)

eg :

function text() {

vararr=[];

for(vari=0;i<10;i++)

{

(function(j){

arr[j]=function()

{

document.write(j);

}

}(i))//這樣就可以保存當(dāng)時(shí)的i,如果套在內(nèi)部忆嗜,則當(dāng)時(shí)打印

}

returnarr;

}

var myarr=text();

for(var j=0;j<10;j++)

{

myarr[j]();

}

逗號(hào)運(yùn)算符概念:返回最后一個(gè)結(jié)果

typeof空格相當(dāng)于typeof()

九.對(duì)象:

delete:

刪除對(duì)象屬性

delete+空格+對(duì)象的屬性

返回值為true

var obj={}對(duì)象字面量/對(duì)象直接量

構(gòu)造函數(shù)

{

1.系統(tǒng)自帶

2.自定義

}

系統(tǒng)自帶:Object(),Array(),Number(),String(),Boolean(),Date()

var obj1=new Object();

構(gòu)造函數(shù)與正常函數(shù)沒有區(qū)別己儒,為了區(qū)別構(gòu)造函數(shù)與普通函數(shù),我們將構(gòu)造函數(shù)首字母大寫

1.變量命名原則:

多個(gè)單詞組成的變量遵循小駝峰式命名:theFirstName

構(gòu)造函數(shù)命名規(guī)則遵循大駝峰式命名:MyStudent

2.構(gòu)造函數(shù)原理:

new關(guān)鍵字在函數(shù)開頭中隱式的創(chuàng)建this空對(duì)象捆毫,然后隱式的return this(返回對(duì)象)

如果強(qiáng)制返回引用值闪湾,則忽略隱式返回,如果強(qiáng)制返回原始值绩卤,則忽略原始值

包裝類:

Number(),String(),Boolean()包裝類不能增加屬性

十.原型:

_開頭的屬性帶有私密性

construct:構(gòu)造者通過這個(gè)屬性可以訪問到構(gòu)造者

__proto__:默認(rèn)值是該構(gòu)造函數(shù)名.原型

function person() {

//body...

}

person.prototype.name="p";

varo=new person();

person.prototype={

name:"a",

cc:"1"

}

console.log(o);

*在js中引用值中存的是地址途样,如果原始地址被更改的話,引用值中存的地址不變濒憋,

*__proto__中存的是person.prototype的地址何暇,如果person.prototype的地址發(fā)生改變,this只有當(dāng)new的時(shí)候才會(huì)被創(chuàng)建凛驮,__proto__指向的地址不變裆站,所以導(dǎo)致上述情況發(fā)生

原型鏈的頂端是object.prototype到了頭瀏覽器會(huì)返回null

__proto__指向的是父級(jí)的prototype

繼承:

傳統(tǒng)js繼承方法:構(gòu)造父級(jí)對(duì)象作為子級(jí)的原型

圣杯模型:利用閉包原理構(gòu)造一個(gè)空函數(shù),該函數(shù)原型與父級(jí)原型相同黔夭,作為緩沖區(qū)存在(作為繼承函數(shù))

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末宏胯,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子本姥,更是在濱河造成了極大的恐慌肩袍,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,270評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扣草,死亡現(xiàn)場(chǎng)離奇詭異了牛,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)辰妙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來甫窟,“玉大人密浑,你說我怎么就攤上這事〈志” “怎么了尔破?”我有些...
    開封第一講書人閱讀 165,630評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長浇衬。 經(jīng)常有香客問我懒构,道長,這世上最難降的妖魔是什么耘擂? 我笑而不...
    開封第一講書人閱讀 58,906評(píng)論 1 295
  • 正文 為了忘掉前任胆剧,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘秩霍。我一直安慰自己篙悯,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評(píng)論 6 392
  • 文/花漫 我一把揭開白布铃绒。 她就那樣靜靜地躺著鸽照,像睡著了一般。 火紅的嫁衣襯著肌膚如雪颠悬。 梳的紋絲不亂的頭發(fā)上矮燎,一...
    開封第一講書人閱讀 51,718評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音赔癌,去河邊找鬼诞外。 笑死,一個(gè)胖子當(dāng)著我的面吹牛届榄,可吹牛的內(nèi)容都是我干的浅乔。 我是一名探鬼主播,決...
    沈念sama閱讀 40,442評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼铝条,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼靖苇!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起班缰,我...
    開封第一講書人閱讀 39,345評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤贤壁,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后埠忘,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體脾拆,經(jīng)...
    沈念sama閱讀 45,802評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評(píng)論 3 337
  • 正文 我和宋清朗相戀三年莹妒,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了名船。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,117評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡旨怠,死狀恐怖渠驼,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情鉴腻,我是刑警寧澤迷扇,帶...
    沈念sama閱讀 35,810評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站爽哎,受9級(jí)特大地震影響蜓席,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜课锌,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評(píng)論 3 331
  • 文/蒙蒙 一厨内、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦隘庄、人聲如沸踢步。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽获印。三九已至,卻和暖如春街州,著一層夾襖步出監(jiān)牢的瞬間兼丰,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評(píng)論 1 272
  • 我被黑心中介騙來泰國打工唆缴, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留鳍征,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,377評(píng)論 3 373
  • 正文 我出身青樓面徽,卻偏偏與公主長得像艳丛,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子趟紊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容