零星記錄

閉包產(chǎn)生的函數(shù)有各自的作用域

//var 存在變量提升 (not defined => undefined) 變量泄露
for(var i = 0;i<10;i++){}
console.log(i);

const實(shí)際上保證的束凑,并不是變量的值不得改動(dòng),而是變量指向的那個(gè)內(nèi)存地址所保存的數(shù)據(jù)不得改動(dòng)

let 之前存在死區(qū) 并且不允許重復(fù)聲明

ES5 只有全局作用域和函數(shù)作用域文虏,沒(méi)有塊級(jí)作用域

//let存在塊級(jí)作用域
{
    let i =10;
}
console.log(i);

在頂層作用域,let不與window掛鉤,var則與window掛鉤 (var)a===window.a

//IIFE(立即執(zhí)行函數(shù)表達(dá)式)
!(function() {
    var temp = 0;
})
//塊級(jí)作用域
{
    let temp=0;
}

for循環(huán)不存在塊級(jí)作用域戏蔑,因?yàn)閒or循環(huán)不是函數(shù)

var msg = "hello";
for(var i =0 ;i<10 ;i++)
{
  var msg = "changed";
}
console.log(msg);//changed
if(true||A){} 
//A不執(zhí)行  
if(false||A){} 
//A執(zhí)行

if(true&&A){}
//A執(zhí)行
if(false&&A){} 
//A不執(zhí)行

(1)基本數(shù)據(jù)類型:number,undefined鲁纠,Boolean总棵,null,string
(2)引用數(shù)據(jù)類型:object改含,function情龄,array

//解構(gòu)賦值時(shí),如果等號(hào)右邊是數(shù)值和布爾值捍壤,則會(huì)先轉(zhuǎn)為對(duì)象骤视。
let {toString: s} = 123;
s === Number.prototype.toString // true

let {toString: s} = true;
s === Boolean.prototype.toString // true

ES6 為字符串添加了遍歷器接口
for of 可識(shí)別 大于0xFFFF的unicode碼,而for(; ;) /for in 不行

0xD800 ~0xDFFF不能單獨(dú)使用

(暫未實(shí)現(xiàn))String.prototype.matchAll返回一個(gè)iterator 需要用Array.from或者for循環(huán)

0b/0B二進(jìn)制 0O 0o八進(jìn)制
嚴(yán)格模式不允許使用0開(kāi)頭代表八進(jìn)制

isFinite isNaN和Number.isFinite Number.isNaN的區(qū)別:前者是全局方法鹃觉,將非數(shù)值先用Number()轉(zhuǎn)換专酗,Number上的則不會(huì)

isNaN('NaN')
//true
Number.isNaN('NaN')
//false

JavaScript 內(nèi)部,整數(shù)和浮點(diǎn)數(shù)采用的是同樣的儲(chǔ)存方法
所以 25 和 25.0 被視為同一個(gè)值帜慢。

Js數(shù)字儲(chǔ)存方法 64 位固定長(zhǎng)度 IEEE 754標(biāo)準(zhǔn)

1 符號(hào)位 0正1負(fù)
2~12 指數(shù)位 次方
13~64 尾數(shù) 溢出進(jìn)1舍0
最大表示范圍則為 11111……111 (52)* 2^11

箭頭函數(shù)的this不能被改變笼裳,不存在arguments,不能當(dāng)作構(gòu)造函數(shù)粱玲,不能使用yield

new 的過(guò)程:
創(chuàng)建一個(gè)臨時(shí)對(duì)象 obj;
將新創(chuàng)建的臨時(shí)對(duì)象的隱式原型指向其構(gòu)造函數(shù)的顯示原型躬柬。
使用 call 改變 this 的指向
如果無(wú)返回值或者返回一個(gè)非對(duì)象值,則將 obj 返回作為新對(duì)象抽减;如果返回值是一個(gè)新對(duì)象的話那么直接直接返回該對(duì)象允青。

Object.create(Object.prototype) = {};
Object.create(null)生成的是純粹的空對(duì)象(無(wú)toString等方法)

apply(obj,arr) 在obj為null時(shí),可以用... (spread運(yùn)算符)代替

spread運(yùn)算符可以用于深拷貝數(shù)組第一層

AMD規(guī)范 Asynchronous Module Definition 異步模塊加載規(guī)范
CMD規(guī)范 Common Moudule Definition 通用模塊加載規(guī)范
UMD規(guī)范 Universal Module Definition 通用模塊規(guī)范
在NodeJs中卵沉,內(nèi)置了module對(duì)象颠锉。并且在每個(gè)模塊中法牲,默認(rèn)var exports = module.exports
NodeJs遵從CommonJs規(guī)范
CommonJS規(guī)范加載模塊是同步的

在服務(wù)器端,模塊都在本地琼掠,加載速度快拒垃,無(wú)需考慮異步加載因此CommonJS規(guī)范比較適用。
瀏覽器環(huán)境下瓷蛙,加載模塊耗時(shí)較大悼瓮,必須采用非同步模式,因此一般采用AMD規(guī)范

ES2016 **指數(shù)運(yùn)算符
ES2017 padStart/padEnd
ES2019 trimStart/trimEnd

舉例來(lái)說(shuō)艰猬,腳本/home/user/projects/foo.js執(zhí)行了require('bar.js')命令横堡,Node會(huì)依次搜索以下文件。

/usr/local/lib/node/bar.js
/home/user/projects/node_modules/bar.js
/home/user/node_modules/bar.js
/home/node_modules/bar.js
/node_modules/bar.js

第一次加載某個(gè)模塊時(shí)冠桃,Node會(huì)緩存該模塊命贴。以后再加載該模塊,就直接從緩存取出該模塊的module.exports屬性食听。

// 刪除指定模塊的緩存
delete require.cache[moduleName];

// 刪除所有模塊的緩存
Object.keys(require.cache).forEach(function(key) {
  delete require.cache[key];
})

CommonJS模塊的加載機(jī)制是胸蛛,輸入的是被輸出的值的拷貝。也就是說(shuō)碳蛋,一旦輸出一個(gè)值胚泌,模塊內(nèi)部的變化就影響不到這個(gè)值。請(qǐng)看下面這個(gè)例子肃弟。

對(duì)于依賴的模塊玷室,AMD 是提前執(zhí)行,CMD 是延遲執(zhí)行笤受。
CMD 推崇依賴就近穷缤,AMD 推崇依賴前置。

CMD
CMD推崇依賴就近箩兽,可以把依賴寫(xiě)進(jìn)你的代碼中的任意一行津肛, 如

define(function(require, exports, module) {
    var a = require('./a');
    a.doSomething();
    var b = require('./b');
    b.doSomething();
});

AMD
AMD是依賴前置的汗贫,換句話說(shuō)身坐,在解析和執(zhí)行當(dāng)前模塊之前,模塊作者必須指明當(dāng)前模塊所依賴的模塊落包。如

define(['./a','./b'],function(a,b) {
     a.doSomething()
     b.doSomething()
});

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末部蛇,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子咐蝇,更是在濱河造成了極大的恐慌涯鲁,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,496評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異抹腿,居然都是意外死亡岛请,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)警绩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)崇败,“玉大人,你說(shuō)我怎么就攤上這事肩祥×糯遥” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,632評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵搭幻,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我逞盆,道長(zhǎng)檀蹋,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,180評(píng)論 1 292
  • 正文 為了忘掉前任云芦,我火速辦了婚禮俯逾,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘舅逸。我一直安慰自己桌肴,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布琉历。 她就那樣靜靜地躺著坠七,像睡著了一般。 火紅的嫁衣襯著肌膚如雪旗笔。 梳的紋絲不亂的頭發(fā)上彪置,一...
    開(kāi)封第一講書(shū)人閱讀 51,165評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音蝇恶,去河邊找鬼拳魁。 笑死,一個(gè)胖子當(dāng)著我的面吹牛撮弧,可吹牛的內(nèi)容都是我干的潘懊。 我是一名探鬼主播,決...
    沈念sama閱讀 40,052評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼贿衍,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼授舟!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起舌厨,我...
    開(kāi)封第一講書(shū)人閱讀 38,910評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤岂却,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體躏哩,經(jīng)...
    沈念sama閱讀 45,324評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡署浩,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了扫尺。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片筋栋。...
    茶點(diǎn)故事閱讀 39,711評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖正驻,靈堂內(nèi)的尸體忽然破棺而出弊攘,到底是詐尸還是另有隱情,我是刑警寧澤姑曙,帶...
    沈念sama閱讀 35,424評(píng)論 5 343
  • 正文 年R本政府宣布襟交,位于F島的核電站,受9級(jí)特大地震影響伤靠,放射性物質(zhì)發(fā)生泄漏捣域。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評(píng)論 3 326
  • 文/蒙蒙 一宴合、第九天 我趴在偏房一處隱蔽的房頂上張望焕梅。 院中可真熱鬧,春花似錦卦洽、人聲如沸贞言。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,668評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)该窗。三九已至,卻和暖如春蚤霞,著一層夾襖步出監(jiān)牢的瞬間挪捕,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,823評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工争便, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留级零,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,722評(píng)論 2 368
  • 正文 我出身青樓滞乙,卻偏偏與公主長(zhǎng)得像奏纪,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子斩启,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評(píng)論 2 353