คำถามติดแท็ก ecmascript-5

19
วัตถุประสงค์ของคำหลัก var คืออะไรและเมื่อใดที่ฉันควรใช้ (หรือละเว้น)
หมายเหตุ : คำถามนี้ถูกถามจากมุมมองของ ECMAScript เวอร์ชัน 3 หรือ 5 คำตอบอาจล้าสมัยเมื่อมีการเปิดตัวฟีเจอร์ใหม่ในการเปิดตัว ECMAScript 6 ฟังก์ชันของvarคำหลักใน JavaScript คืออะไรและอะไรคือความแตกต่างระหว่าง var someNumber = 2; var someFunction = function() { doSomething; } var someObject = { } var someObject.someProperty = 5; และ someNumber = 2; someFunction = function() { doSomething; } someObject = { } someObject.someProperty = …

7
รับกุญแจของวัตถุมากมาย
ฉันต้องการได้รับคีย์ของวัตถุ JavaScript เป็นอาร์เรย์ทั้งใน jQuery หรือ JavaScript บริสุทธิ์ มีวิธี verbose น้อยกว่านี้ไหม var foo = { 'alpha' : 'puffin', 'beta' : 'beagle' }; var keys = []; for (var key in foo) { keys.push(key); }

8
ความแตกต่างระหว่างการแช่แข็งและการปิดผนึก
ฉันเพิ่งได้ยินเกี่ยวกับวิธีการของ JavaScript freezeและsealสามารถใช้เพื่อทำให้ Object ใด ๆ ไม่เปลี่ยนรูปได้ นี่คือตัวอย่างสั้น ๆ วิธีใช้: var o1 = {}, o2 = {}; Object.freeze(o2); o1["a"] = "worked"; o2["a"] = "worked"; alert(o1["a"]); //prints "worked" alert(o2["a"]); //prints "undefined" ความแตกต่างระหว่างfreezeและsealคืออะไร? พวกเขาสามารถเพิ่มประสิทธิภาพได้หรือไม่?

12
[] .forEach.call () ทำอะไรใน JavaScript
ฉันกำลังดูตัวอย่างโค้ดบางส่วนและฉันพบหลายองค์ประกอบที่เรียกใช้ฟังก์ชันผ่านรายการโหนดโดยใช้ forEach กับอาร์เรย์ว่าง ตัวอย่างเช่นฉันมีบางอย่างเช่น: [].forEach.call( document.querySelectorAll('a'), function(el) { // whatever with the current node }); แต่ฉันไม่เข้าใจว่ามันทำงานอย่างไร ใครช่วยอธิบายพฤติกรรมของอาร์เรย์ว่างด้านหน้า forEach และวิธีการcallทำงานได้บ้าง

4
การสร้างช่วงใน JavaScript - ไวยากรณ์แปลก ๆ
ฉันพบรหัสต่อไปนี้ในรายชื่อผู้รับจดหมาย es-discuss: Array.apply(null, { length: 5 }).map(Number.call, Number); สิ่งนี้ผลิต [0, 1, 2, 3, 4] เหตุใดจึงเป็นผลลัพธ์ของรหัส เกิดอะไรขึ้นที่นี่

2
Javascript ลดอาร์เรย์ว่าง
เมื่อฉันลดอาร์เรย์ฉันกำลังพยายามหาเลขศูนย์ แต่ฉันไม่เข้าใจพฤติกรรมของฟังก์ชันอย่างชัดเจน [].reduce(function(previousValue, currentValue){ return Number(previousValue) + Number(currentValue); }); ผลลัพธ์ TypeError: Reduce of empty array with no initial value ดูเหมือนว่าถ้าอาร์เรย์ว่างเปล่าฉันไม่สามารถลดได้ [""].reduce(function(previousValue, currentValue){ return Number(previousValue) + Number(currentValue); }); ผลลัพธ์ "" หากองค์ประกอบเดียวในอาร์เรย์เป็นสตริงว่างให้ดึงสตริงว่าง

7
เหตุใด Objects จึงไม่สามารถทำซ้ำได้ใน JavaScript
เหตุใดวัตถุจึงไม่สามารถทำซ้ำได้ตามค่าเริ่มต้น ฉันเห็นคำถามตลอดเวลาที่เกี่ยวข้องกับการวนซ้ำออบเจ็กต์วิธีแก้ปัญหาทั่วไปคือการวนซ้ำคุณสมบัติของอ็อบเจ็กต์และเข้าถึงค่าภายในอ็อบเจ็กต์ด้วยวิธีนั้น สิ่งนี้ดูธรรมดามากจนทำให้ฉันสงสัยว่าทำไมวัตถุต่างๆถึงไม่สามารถทำซ้ำได้ คำสั่งเช่น ES6 for...ofน่าใช้สำหรับวัตถุโดยค่าเริ่มต้น เนื่องจากคุณลักษณะเหล่านี้มีให้เฉพาะสำหรับ "อ็อบเจ็กต์ที่ทำซ้ำได้" แบบพิเศษซึ่งไม่รวมอ{}อบเจ็กต์เราจึงต้องผ่านห่วงเพื่อให้สามารถใช้งานกับวัตถุที่เราต้องการใช้ คำสั่ง for ... of สร้าง loop วนซ้ำบนวัตถุที่ทำซ้ำได้ (รวมถึง Array, Map, Set, วัตถุอาร์กิวเมนต์และอื่น ๆ ) ... ตัวอย่างเช่นการใช้ฟังก์ชันเครื่องกำเนิด ES6 : var example = {a: {e: 'one', f: 'two'}, b: {g: 'three'}, c: {h: 'four', i: 'five'}}; function* entries(obj) { for (let key of …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.