成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

《JavaScript高級程序設計》筆記:基本概念

ygyooo / 784人閱讀

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

一、寫在前面

最近重讀《JavaScript高級程序設計》,總結(jié)下來,查漏補缺。

二、JS簡介 2.1 JS組成

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

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

BOM:瀏覽器對象模型,處理瀏覽器窗口和框架交互(部分擴展)

2.2

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

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

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

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

2. XHTML和HTML主要不同?

元素必正確嵌套,防止

單標簽< />、雙標簽<> 閉合

標簽名、屬性大小寫敏感

必須有根元素

三、基本概念 3.1 ECMAScript語法

區(qū)分大小寫

標識符:

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

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

慣例為駝峰

名稱不能為關鍵字

注釋:

單行注釋 / /

塊級注釋 /* */

嚴格模式: 編譯指示" user strict "

語句:

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

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

關鍵字:

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)建時有作用域

只定義未初始化,值為undefined

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

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

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

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

typeof操作符:

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

特殊情況: typeof null ---> object 被認為是空對象指針

對象:

空對象,初始化時obj = null 通過 obj != null 來看是否保存對象引用

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

布爾:

true false 區(qū)分大小寫

數(shù)值:

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

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

科學計數(shù)法,123e7或123e-7,浮點數(shù)最大精度17位小數(shù)

浮點數(shù)進行計算,結(jié)果不準確

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

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

字符串:

0或多個16位unicode字符組成

單雙引號無區(qū)別

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

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

3.3 方法

數(shù)值

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

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

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

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

字符串:

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

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

對象:

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

hansOwnProperty 檢查當前對象中存在某屬性(不查原型)

isPrototypeOf 檢查是否是某對象的原型

propertyIsEnumerable 能否使用for-in枚舉

toLocaleString 返回對象字符串表示

toString( ) 對象的字符串表示

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

3.3 操作符

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

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

只能操作一個值

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

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

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

位操作符:

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

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

按位與 & 二進制每位相與得出二進制值

按位或 | 二進制每位相或得出二進制值

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

左移 << 移動后補0,不影響符號位

右移 >> 保留符號位,移動后補0

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

布爾操作符:

非 !

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

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

乘性操作符:

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

加性操作符:

+ 加法, - 減法

關系操作符:

< 、 >、 <=、 >=

都為字符串時,比較字符串字符編碼值

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

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

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

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

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

相等操作符:

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

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

null == undefined,null !== undefined

兩個對象,比較是否指向同一對象

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

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

逗號操作符:

分隔多個操作

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

3.4 PS:

1. valueOf與toString

推薦閱讀 《javascript高級程序設計》筆記:valueOf() / toString() 對比

2. 負數(shù)的二進制表示:

絕對值的二進制碼,按位取反,加1,得到

3. 按位非運算符 ~

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秒左右,底層運算更快

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

d && ?? 返回??

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

有null NaN undefined 返回 對應null NaN undefined

d || ?? 返回 d

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

d || e 返回 d

都是null NaN undefined 返回 對應null NaN undefined

3.5 語句

if (條件) { 代碼塊 }

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

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

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

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

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

break continue

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

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

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

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

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

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

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

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

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

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

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

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

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/104440.html

相關文章

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

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

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

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

    fuyi501 評論0 收藏0
  • JavaScript高級程序設計筆記基本概念(三)

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

    jas0n 評論0 收藏0
  • JavaScript高級程序設計學習筆記三(基本語法)

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

    Mike617 評論0 收藏0
  • JavaScript高級程序設計》讀書筆記

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

    dayday_up 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<