亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

《JavaScript高級(jí)程序設(shè)計(jì)》筆記:基本概念

ygyooo / 826人閱讀

摘要:一寫在前面最近重讀高級(jí)程序設(shè)計(jì),總結(jié)下來,查漏補(bǔ)缺。但這種影響是單向的修改命名參數(shù)不會(huì)改變中對(duì)應(yīng)的值。這是因?yàn)閷?duì)象的長度是由傳入的參數(shù)個(gè)數(shù)決定的,不是由定義函數(shù)時(shí)的命名參數(shù)的個(gè)數(shù)決定的。實(shí)際改變會(huì)同步,改變也會(huì)同步

一、寫在前面

最近重讀《JavaScript高級(jí)程序設(shè)計(jì)》,總結(jié)下來,查漏補(bǔ)缺。

二、JS簡介 2.1 JS組成

ECMAscript:以ECMA-262為基礎(chǔ)的語言,由瀏覽器支持

DOM:編程接口(API), 將頁面映射成節(jié)點(diǎn)結(jié)構(gòu)(文檔樹),提供操作方法

BOM:瀏覽器對(duì)象模型,處理瀏覽器窗口和框架交互(部分?jǐn)U展)

2.2

藍(lán)色線代表網(wǎng)絡(luò)讀取,紅色線代表執(zhí)行時(shí)間,均針對(duì)腳本;綠色線代表 HTML 解析。

默認(rèn),同步,順序解析,解析到立即加載,加載完立即執(zhí)行。

defer,異步,同時(shí)加載,html解析完成后執(zhí)行(多個(gè),不一定按順序執(zhí)行,適用外鏈腳本)(HTML5要求按出現(xiàn)順序執(zhí)行,但實(shí)際不一定,不一定會(huì)在DOMContentLoaded事件觸發(fā)前執(zhí)行)

async,異步,同時(shí)加載,加載完立即執(zhí)行(多個(gè),亂序執(zhí)行)

2. XHTML和HTML主要不同?

元素必正確嵌套,防止

單標(biāo)簽< />、雙標(biāo)簽<> 閉合

標(biāo)簽名、屬性大小寫敏感

必須有根元素

三、基本概念 3.1 ECMAScript語法

區(qū)分大小寫

標(biāo)識(shí)符:

參數(shù),變量,屬性,函數(shù)名

以字母、下劃線_、$開頭

慣例為駝峰

名稱不能為關(guān)鍵字

注釋:

單行注釋 / /

塊級(jí)注釋 /* */

嚴(yán)格模式: 編譯指示" user strict "

語句:

推薦以分號(hào);結(jié)尾

if( ) 可省略代碼塊{ }直接書寫語句,但推薦不省略

關(guān)鍵字:

break case catch continue debugger default delete

do else finally for function if in

instanceof new return switch this throw try

typeof var void while with

保留字:

abstract boolean byte char class const debugger double

enum export extends final float goto implements import

int interface long native package private protected public

short static super synchronized throws transient volatile

外加let、yield、eval、arguments

3.2數(shù)據(jù)類型

變量:松散類型(可修改值的類型),var創(chuàng)建時(shí)有作用域

只定義未初始化,值為undefined

不推薦在局部中定義全局變量

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

簡單(基本)數(shù)據(jù)類型:number,string,Boolean,undef,null

復(fù)雜數(shù)據(jù)類型:Object

typeof操作符:

值:number,string,boolean,undefined,null,object,function

特殊情況: typeof null ---> object 被認(rèn)為是空對(duì)象指針

對(duì)象:

空對(duì)象,初始化時(shí)obj = null 通過 obj != null 來看是否保存對(duì)象引用

新建對(duì)象:new Object( ) 或 new Object

布爾:

true false 區(qū)分大小寫

數(shù)值:

八進(jìn)制(嚴(yán)格模式下失效),0開頭,后續(xù)值超過7則 079無效,解析為79

十六進(jìn)制,不區(qū)分大小寫,0x開頭歐,后續(xù)0-9、A-F

科學(xué)計(jì)數(shù)法,123e7或123e-7,浮點(diǎn)數(shù)最大精度17位小數(shù)

浮點(diǎn)數(shù)進(jìn)行計(jì)算,結(jié)果不準(zhǔn)確

數(shù)值范圍Number.MIN_VALUE 5e-324 ~ Number.MAX_VALUE 1.7976931348623157e+308,超出對(duì)應(yīng)±infinity

NaN,返回不為數(shù)值,也為數(shù)值類型,不影響代碼執(zhí)行,操作NaN都返回NaN,與任何值都不相等

字符串:

0或多個(gè)16位unicode字符組成

單雙引號(hào)無區(qū)別

字符字面量:  f " " x u 及6位unicode字符

一旦創(chuàng)建,值不可改變,只能---->新的創(chuàng)建,銷毀原來的(舊版瀏覽器執(zhí)行速度慢)

3.3 方法

數(shù)值

isNaN( )隱式轉(zhuǎn)換數(shù)值

Number( ),null ----> 0,undefined ---> NaN,八進(jìn)制前導(dǎo)0失效,十六進(jìn)制轉(zhuǎn)換為十進(jìn)制整數(shù)

parseInt( ),直到不是數(shù)字,保留整數(shù),識(shí)別八進(jìn)制、十六進(jìn)制,可指定第二個(gè)參數(shù)parseInt(a,8)指定八進(jìn)制

parseFloat( ),不解析前導(dǎo)0,可用于:科學(xué)計(jì)數(shù)法轉(zhuǎn)完全展示

字符串:

toString(a) 參數(shù)可設(shè)置進(jìn)制,數(shù)據(jù)轉(zhuǎn)換值,有些不能轉(zhuǎn)換(undefined,null)

String()遵循先按toString執(zhí)行,不成功再按String()轉(zhuǎn)換(undefined----> undefined , null ----> null )

對(duì)象:

constructor 創(chuàng)建實(shí)例的函數(shù)(構(gòu)造函數(shù))

hansOwnProperty 檢查當(dāng)前對(duì)象中存在某屬性(不查原型)

isPrototypeOf 檢查是否是某對(duì)象的原型

propertyIsEnumerable 能否使用for-in枚舉

toLocaleString 返回對(duì)象字符串表示

toString( ) 對(duì)象的字符串表示

valueOf( ) 返回對(duì)象的字符串、數(shù)值或布爾值

3.3 操作符

算數(shù)、位、關(guān)系、相等操作符

一元操作符(隱式轉(zhuǎn)換):

只能操作一個(gè)值

前置(副效應(yīng):語句被求值前值改變)

后置(語句被求值后值改變)

含對(duì)象,執(zhí)行valueOf( ) 后得到的值進(jìn)行加減

位操作符:

轉(zhuǎn)換為32位整數(shù),31位二進(jìn)制數(shù)+ 1位符號(hào)位(0正1負(fù))

按位非 ~ 得到值的負(fù)值 - 1(底層操作,比 - a - 1 快)

按位與 & 二進(jìn)制每位相與得出二進(jìn)制值

按位或 | 二進(jìn)制每位相或得出二進(jìn)制值

按位異或^ 兩位相異則為1,否則為0

左移 << 移動(dòng)后補(bǔ)0,不影響符號(hào)位

右移 >> 保留符號(hào)位,移動(dòng)后補(bǔ)0

無符號(hào)右移 >>> 不保留符號(hào)位,負(fù)數(shù)一般右移后很大

布爾操作符:

非 !

與 && 短路操作(有 false 則不往下執(zhí)行),null 返回null,NaN返回NaN ,undefined返回undefined

或 || 短路操作(有true 則不往下執(zhí)行 )

乘性操作符:

隱式轉(zhuǎn)換為數(shù)值后計(jì)算,/ 除法 ,% 取余

加性操作符:

+ 加法, - 減法

關(guān)系操作符:

< 、 >、 <=、 >=

都為字符串時(shí),比較字符串字符編碼值

有對(duì)象,轉(zhuǎn)valueOf( ),不成則toString( )

字符串比較,大寫小于小寫,如需比較可全轉(zhuǎn)小寫

都為字符串的數(shù)字,則按編碼比

一個(gè)數(shù)字一個(gè)字符串,會(huì)轉(zhuǎn)為數(shù)值

轉(zhuǎn)換出NaN,則結(jié)果false

相等操作符:

強(qiáng)制轉(zhuǎn)換規(guī)則:有布爾轉(zhuǎn)為數(shù)值、有數(shù)有字符串轉(zhuǎn)為數(shù)值

只有一個(gè)對(duì)象,按照valueOf()轉(zhuǎn)換后比較

null == undefined,null !== undefined

兩個(gè)對(duì)象,比較是否指向同一對(duì)象

條件操作符:條件?‘真,取值’:‘假,取值’
賦值操作符:

=、 +=、 *=、 /=、 %=、 <<=、 >>=、 >>>=(簡化書寫,不影響性能)

逗號(hào)操作符:

分隔多個(gè)操作

a =(1,2,3,4),a值為最后一個(gè)4

3.4 PS:

1. valueOf與toString

推薦閱讀 《javascript高級(jí)程序設(shè)計(jì)》筆記:valueOf() / toString() 對(duì)比

2. 負(fù)數(shù)的二進(jìn)制表示:

絕對(duì)值的二進(jìn)制碼,按位取反,加1,得到

3. 按位非運(yùn)算符 ~

function fast() {
    let s = 2222222222; 
    let start1 = Date.now();
    for (var i = 1; i<10000000000;i++) { s = ~ s }; 
    console.log("fast",Date.now() - start1); 
 }; 
 function slow() {
    let s = 2222222222; 
    let start2 = Date.now();
    for (var i = 1; i<10000000000;i++) { s = - (s + 1) }; 
    console.log("slow",Date.now() - start2); 
 };
 fast();
 slow();

相差4-5秒左右,底層運(yùn)算更快

4. && || 操作
let d = { name: "aa" } ,??代表某參數(shù)

d && ?? 返回??

?? && d ??為true返回d,否則返回??

有null NaN undefined 返回 對(duì)應(yīng)null NaN undefined

d || ?? 返回 d

?? || d ??為false返回d

d || e 返回 d

都是null NaN undefined 返回 對(duì)應(yīng)null NaN undefined

3.5 語句

if (條件) { 代碼塊 }

do-while 后測試循環(huán)語句,while中滿足則執(zhí)行

while 前測試循環(huán)語句

for :while做不到,for也做不到、for( ; ; )三參數(shù)可選

for-in 循環(huán)對(duì)象屬性,順序不可預(yù)測

label 名字:語句,結(jié)合for循環(huán),方便continue 名字 執(zhí)行該操作,break 名字 中斷名字操作

break continue

with 將代碼作用域設(shè)置到特定對(duì)象中,影響性能,不建議使用

with(location) { 
    var t = search.name;
    var w = hostname;
}
// 等同于
var t = location.seatch.name;
var w = location.hostname;

switch 全等比較(不進(jìn)行類型轉(zhuǎn)換),可以合并情況,case可為變量、表達(dá)式,

switch?(i)?{
????case?25:?
????????/*?合并兩種情形?*/
????case?35:?
????????alert("25?or?35");
????????break;
????...
}
3.6 函數(shù)

function (參數(shù)) {函數(shù)體}

定義的參數(shù)個(gè)數(shù)可以≠傳入?yún)?shù)個(gè)數(shù),適用傳參個(gè)數(shù)不定執(zhí)行不同操作

可function acc(a)傳acc( ) 或function acc()傳acc(1,2)

內(nèi)部可用arguments來訪問參數(shù),如果a對(duì)應(yīng)arguments[0],兩值內(nèi)存空間獨(dú)立,但互相同步

沒有重載:函數(shù)沒有簽名,同名函數(shù)后定義的生效

讀取這兩個(gè)值會(huì)訪問相同的內(nèi)存空間;它們的內(nèi)存空間是獨(dú)立的,但它們的值會(huì)同步。但這種影響是單向的:修改命名參數(shù)不會(huì)改變arguments中對(duì)應(yīng)的值。另外還要記住,如果只傳入了一個(gè)參數(shù),那么為arguments[1]設(shè)置的值不會(huì)反應(yīng)到命名參數(shù)中。這是因?yàn)閍rguments對(duì)象的長度是由傳入的參數(shù)個(gè)數(shù)決定的,不是由定義函數(shù)時(shí)的命名參數(shù)的個(gè)數(shù)決定的。

書中:修改命名參數(shù)不會(huì)改變arguments中對(duì)應(yīng)的值。 實(shí)際改變arguments[0]會(huì)同步a ,改變a也會(huì)同步argumenets[0]

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/104440.html

相關(guān)文章

  • 004-讀書筆記-JavaScript高級(jí)程序設(shè)計(jì) 基本概念(下)

    摘要:操作符,會(huì)將數(shù)值改變正數(shù)變成負(fù)數(shù)負(fù)數(shù)變成正數(shù)。同時(shí),也說明了,使用兩個(gè)邏輯非操作符和的操作結(jié)果相同。操作符得到的是余數(shù)。不相等操作符有兩種。 這篇筆記的內(nèi)容對(duì)應(yīng)的是《JavaScript高級(jí)程序設(shè)計(jì)(第三版)》中的第三章。 1.操作符 1-1 一元操作符 遞增和遞減操作符 遞增和遞減操作符有兩個(gè) ++ 和 --。一元操作符使用的時(shí)候,可以前置也可以后置。由于兩個(gè)操作方式類似,先只說明 ...

    nevermind 評(píng)論0 收藏0
  • javascript高級(jí)程序設(shè)計(jì)筆記:內(nèi)存與執(zhí)行環(huán)境

    摘要:因此,所有在方法中定義的變量都是放在棧內(nèi)存中的當(dāng)我們?cè)诔绦蛑袆?chuàng)建一個(gè)對(duì)象時(shí),這個(gè)對(duì)象將被保存到運(yùn)行時(shí)數(shù)據(jù)區(qū)中,以便反復(fù)利用因?yàn)閷?duì)象的創(chuàng)建成本通常較大,這個(gè)運(yùn)行時(shí)數(shù)據(jù)區(qū)就是堆內(nèi)存。 上一篇:《javascript高級(jí)程序設(shè)計(jì)》筆記:繼承近幾篇博客都會(huì)圍繞著圖中的知識(shí)點(diǎn)展開 showImg(https://segmentfault.com/img/bVY0C4?w=1330&h=618);...

    fuyi501 評(píng)論0 收藏0
  • JavaScript高級(jí)程序設(shè)計(jì)筆記基本概念(三)

    摘要:數(shù)據(jù)類型中有種簡單數(shù)據(jù)類型也稱為基本數(shù)據(jù)類型和。因?yàn)樘厥庵当徽J(rèn)為是一個(gè)空的對(duì)象引用。盡管和有這樣的關(guān)系,但它們的用途完全不同。這樣做不僅可以體現(xiàn)作為空對(duì)象指針的慣例,而且也有助于進(jìn)一步區(qū)分和。 數(shù)據(jù)類型 ECMAScript中有5種簡單數(shù)據(jù)類型(也稱為基本數(shù)據(jù)類型):undefined,null,boolean,number和string。 typeof typeof null會(huì)返回o...

    jas0n 評(píng)論0 收藏0
  • JavaScript高級(jí)程序設(shè)計(jì)學(xué)習(xí)筆記三(基本語法)

    摘要:數(shù)據(jù)類型中有種簡單數(shù)據(jù)類型也稱為基本數(shù)據(jù)類型和。在中非空字符串,非零數(shù)字,任意對(duì)象,都被認(rèn)為。而空字符串,和,,認(rèn)為是。用于表示整數(shù)和浮點(diǎn)數(shù)。標(biāo)識(shí)符由數(shù)字字母下劃線美元符組成,但首字母不能是數(shù)字。變量方法對(duì)象命名推薦駝峰法。 JavaScript語法 一.語法簡介 因?yàn)镴avaScript語法和Java等語法非常類似。所以只是簡單介紹一下。 大小寫 JavaScript是大小寫敏感的語...

    Mike617 評(píng)論0 收藏0
  • JavaScript高級(jí)程序設(shè)計(jì)》讀書筆記

    摘要:為了每個(gè)對(duì)象都能通過來檢測,需要以或者的形式來調(diào)用,傳遞要檢查的對(duì)象作為第一個(gè)參數(shù),稱為。對(duì)象都是動(dòng)態(tài)的,這就意味著每次訪問對(duì)象,都會(huì)運(yùn)行一次查詢。是語言中立的用于訪問和操作和文檔。 一、第三章 基本概念: 1.理解參數(shù) 1.1 可以向函數(shù)中傳遞任意數(shù)量的參數(shù),并且可以通過arguments對(duì)象來訪問這些參數(shù)。 1.2 arguments對(duì)象只是類似數(shù)組,它通過length來確定傳進(jìn)來...

    dayday_up 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<