คำถามติดแท็ก javascript

สำหรับคำถามเกี่ยวกับการเขียนโปรแกรมใน ECMAScript (JavaScript / JS) และภาษา / การใช้งานต่างๆ (ไม่รวม ActionScript) แท็กนี้ไม่ค่อยได้ใช้คนเดียว แต่ส่วนใหญ่มักจะเกี่ยวข้องกับแท็ก [node.js], [jquery], [json] และ [html]

12
เหตุใดจึงมีค่า "null" ใน JavaScript
ใน JavaScript มีสองค่าซึ่งโดยทั่วไปจะบอกว่า 'ฉันไม่อยู่ - และundefinednull คุณสมบัติที่โปรแกรมเมอร์ไม่ได้กำหนดอะไรจะเป็นundefinedแต่เพื่อให้คุณสมบัตินั้นกลายเป็นคุณสมบัติnullนั้นnullจะต้องถูกกำหนดให้กับคุณสมบัตินั้นอย่างชัดเจน ฉันเคยคิดว่ามีความจำเป็นnullเพราะundefinedเป็นค่าดั้งเดิมและnullวัตถุ มันไม่ได้ถึงแม้ว่าtypeof nullจะให้ผลผลิต'object': ที่จริงทั้งสองมีค่าดั้งเดิม - ซึ่งหมายความว่าค่าundefinedมิได้nullสามารถกลับมาจากการทำงานของผู้สร้างขณะที่ทั้งสองจะถูกแปลงเป็นวัตถุที่ว่างเปล่า (หนึ่งที่มีการโยนข้อผิดพลาดความล้มเหลวจงประกาศในการก่อสร้าง) ทั้งคู่ยังประเมินfalseในบริบทบูลีน ข้อแตกต่างที่แท้จริงที่ฉันสามารถคิดเป็นที่หนึ่งประเมินเพื่อNaNการอื่น ๆ เพื่อ0ในบริบทที่เป็นตัวเลข เหตุใดจึงมีทั้งสองอย่างundefinedและnullเพียงแค่สร้างความสับสนให้โปรแกรมเมอร์ที่ตรวจสอบไม่ถูกต้องnullเมื่อพยายามค้นหาว่ามีการตั้งค่าคุณสมบัติหรือไม่? สิ่งที่อยากทราบคือหากใครมีตัวอย่างที่สมเหตุสมผลที่จำเป็นต้องใช้nullที่ไม่สามารถแสดงundefinedแทนได้ ดังนั้นฉันทามติทั่วไปดูเหมือนจะundefinedหมายความว่า 'ไม่มีคุณสมบัติดังกล่าว' ในขณะที่nullหมายถึง 'ทรัพย์สินนั้นมีอยู่จริง แต่ไม่มีค่า' ฉันสามารถใช้ชีวิตแบบนั้นได้หากการใช้งาน JavaScript บังคับใช้พฤติกรรมนี้จริง - แต่undefinedเป็นค่าดั้งเดิมที่ถูกต้องอย่างสมบูรณ์ดังนั้นจึงสามารถกำหนดให้กับคุณสมบัติที่มีอยู่เพื่อทำลายสัญญานี้ได้อย่างง่ายดาย ดังนั้นหากคุณต้องการตรวจสอบว่ามีคุณสมบัติอยู่หรือไม่คุณต้องใช้ตัวinดำเนินการหรือhasOwnProperty()อย่างไรก็ตาม อีกครั้ง: การใช้ประโยชน์สำหรับค่าที่แยกต่างหากสำหรับundefinedและnullคืออะไร ฉันใช้จริงundefinedเมื่อต้องการยกเลิกการตั้งค่าคุณสมบัติที่ไม่ได้ใช้งานอีกต่อไป แต่ไม่ต้องการdeleteใช้ ฉันควรใช้nullแทนหรือไม่?

12
JavaScript: ความแตกต่างระหว่าง. forEach () และ. map ()
ฉันรู้ว่ามีหัวข้อแบบนี้มากมาย และฉันรู้พื้นฐาน: .forEach()ทำงานบนอาร์เรย์เดิมและอาร์เรย์.map()ใหม่ ในกรณีของฉัน: function practice (i){ return i+1; }; var a = [ -1, 0, 1, 2, 3, 4, 5 ]; var b = [ 0 ]; var c = [ 0 ]; console.log(a); b = a.forEach(practice); console.log("====="); console.log(a); console.log(b); c = a.map(practice); console.log("====="); console.log(a); console.log(c); และนี่คือผลลัพธ์: [ -1, …

12
อะไรคือความแตกต่างระหว่าง string primitives และ String objects ใน JavaScript?
นำมาจากMDN สตริงลิเทอรัล (แสดงโดยอัญประกาศคู่หรือเดี่ยว) และสตริงที่ส่งคืนจากการเรียกสตริงในบริบทที่ไม่ใช่ตัวสร้าง (กล่าวคือโดยไม่ใช้คีย์เวิร์ดใหม่) เป็นสตริงดั้งเดิม JavaScript จะแปลงวัตถุดั้งเดิมเป็นสตริงโดยอัตโนมัติเพื่อให้สามารถใช้วิธีการอ็อบเจ็กต์ String สำหรับสตริงดั้งเดิมได้ ในบริบทที่ต้องเรียกใช้เมธอดบนสตริงดั้งเดิมหรือการค้นหาคุณสมบัติเกิดขึ้น JavaScript จะตัดสตริงดั้งเดิมโดยอัตโนมัติและเรียกใช้เมธอดหรือดำเนินการค้นหาคุณสมบัติ ดังนั้นฉันคิดว่าการดำเนินการ (เชิงตรรกะ) (การเรียกใช้เมธอด) บนสตริงดั้งเดิมควรจะช้ากว่าการดำเนินการกับสตริงอ็อบเจกต์เนื่องจากสตริงดั้งเดิมใด ๆ ถูกแปลงเป็นสตริงอ็อบเจ็กต์ (งานพิเศษ) ก่อนที่methodจะนำไปใช้กับสตริง แต่ในกรณีทดสอบนี้ผลลัพธ์กลับตรงกันข้าม ป้องกันรหัส-1วิ่งเร็วกว่าบล็อก-2 รหัสทั้งบล็อกรหัสจะได้รับดังนี้ รหัสบล็อก -1: var s = '0123456789'; for (var i = 0; i < s.length; i++) { s.charAt(i); } รหัสบล็อก -2: var s = new String('0123456789'); for …

4
อะไรคือความแตกต่างระหว่าง "ประกาศคลาส" และ "อินเทอร์เฟซ" ใน TypeScript
ใน TypeScript เมื่อสร้างไฟล์การประกาศซอร์ส. d.ts ซึ่งเป็นที่นิยมมากกว่าและเพราะเหตุใด declare class Example { public Method(): void; } หรือ interface Example { Method(): void; } ความแตกต่างที่ฉันบอกได้คืออินเทอร์เฟซไม่สามารถมีเมธอดแบบคงที่ได้ดังนั้นคุณต้องใช้คลาสสำหรับสิ่งนั้น ทั้งสองไม่ได้ผลิตเอาต์พุต JS ใด ๆ ดังนั้นอาจไม่สำคัญ?

8
ฉันจะฟังการคลิกค้างใน jQuery ได้อย่างไร
ฉันต้องการให้สามารถเริ่มเหตุการณ์เมื่อผู้ใช้คลิกที่ปุ่มจากนั้นกดค้างไว้เป็นเวลา 1,000 ถึง 1,500 มิลลิวินาที มีฟังก์ชันหลักของ jQuery หรือปลั๊กอินที่เปิดใช้งานอยู่แล้วหรือไม่? ควรม้วนเองหรือไม่? ควรเริ่มจากตรงไหน?

15
เป็นไปได้ไหมที่จะแทนที่ฟังก์ชัน toString () ของ JavaScript เพื่อจัดเตรียมเอาต์พุตที่มีความหมายสำหรับการดีบัก
เมื่อฉันconsole.log()เป็นออบเจ็กต์ในโปรแกรม JavaScript ฉันเพิ่งเห็นผลลัพธ์[object Object]ซึ่งไม่ค่อยมีประโยชน์ในการหาว่าวัตถุ (หรือแม้แต่ประเภทของวัตถุ) นั้นเป็นอย่างไร ใน C # ฉันใช้เพื่อแทนที่ToString()เพื่อให้สามารถปรับแต่งการแสดงดีบักเกอร์ของวัตถุได้ มีอะไรที่คล้ายกันที่ฉันสามารถทำได้ใน JavaScript หรือไม่?


16
คุณอ่านค่ากฎ CSS ด้วย JavaScript ได้อย่างไร?
ฉันต้องการส่งคืนสตริงที่มีเนื้อหาทั้งหมดของกฎ CSS เช่นเดียวกับรูปแบบที่คุณเห็นในสไตล์อินไลน์ ฉันต้องการที่จะทำได้โดยที่ไม่รู้ว่ามีอะไรอยู่ในกฎใดกฎหนึ่งดังนั้นฉันจึงไม่สามารถดึงมันออกมาตามชื่อสไตล์ได้ (เช่น.style.widthฯลฯ ) CSS: .test { width:80px; height:50px; background-color:#808080; } รหัสจนถึงตอนนี้: function getStyle(className) { var classes = document.styleSheets[0].rules || document.styleSheets[0].cssRules for(var x=0;x<classes.length;x++) { if(classes[x].selectorText==className) { //this is where I can collect the style information, but how? } } } getStyle('.test')
116 javascript  html  css 

15
จะผูกอาร์กิวเมนต์ของฟังก์ชันโดยไม่ผูกสิ่งนี้ได้อย่างไร?
ใน Javascript ฉันจะผูกอาร์กิวเมนต์กับฟังก์ชันโดยไม่ผูกthisพารามิเตอร์ได้อย่างไร ตัวอย่างเช่น: //Example function. var c = function(a, b, c, callback) {}; //Bind values 1, 2, and 3 to a, b, and c, leave callback unbound. var b = c.bind(null, 1, 2, 3); //How can I do this without binding scope? ฉันจะหลีกเลี่ยงผลข้างเคียงของการผูกขอบเขตของฟังก์ชัน (เช่นการตั้งค่าthis= null) ด้วยได้อย่างไร แก้ไข: ขอโทษสำหรับความสับสน. ฉันต้องการผูกอาร์กิวเมนต์จากนั้นสามารถเรียกใช้ฟังก์ชันที่ถูกผูกไว้ในภายหลังและทำให้มันทำงานเหมือนกับว่าฉันเรียกฟังก์ชันดั้งเดิมและส่งผ่านอาร์กิวเมนต์ที่ถูกผูกไว้: …
116 javascript 

23
ฟังก์ชันใน JavaScript ที่สามารถเรียกใช้ได้เพียงครั้งเดียว
ฉันต้องการสร้างฟังก์ชันที่สามารถเรียกใช้งานได้เพียงครั้งเดียวในแต่ละครั้งหลังจากครั้งแรกจะไม่ถูกเรียกใช้งาน ฉันรู้จาก C ++ และ Java เกี่ยวกับตัวแปรคงที่สามารถทำงานได้ แต่ฉันอยากรู้ว่ามีวิธีที่หรูหรากว่านี้หรือไม่?

9
วิธีการส่งออกคลาส ES6 ในโหนด 4 อย่างถูกต้อง?
ฉันกำหนดคลาสในโมดูล: "use strict"; var AspectTypeModule = function() {}; module.exports = AspectTypeModule; var AspectType = class AspectType { // ... }; module.export.AspectType = AspectType; แต่ฉันได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้: TypeError: Cannot set property 'AspectType' of undefined at Object.<anonymous> (...\AspectType.js:30:26) at Module._compile (module.js:434:26) .... ฉันจะส่งออกคลาสนี้และใช้ในโมดูลอื่นได้อย่างไร ฉันเคยเห็นคำถาม SO อื่น ๆ แต่ฉันได้รับข้อความแสดงข้อผิดพลาดอื่น ๆ เมื่อฉันพยายามใช้วิธีแก้ไข

3
HtmlWebpackPlugin ฉีดไฟล์พา ธ สัมพัทธ์ซึ่งแตกเมื่อโหลดเส้นทางเว็บไซต์ที่ไม่ใช่รูท
ฉันใช้ webpack และ HtmlWebpackPlugin เพื่อฉีด js และ css ที่รวมไว้ในไฟล์เทมเพลต html new HtmlWebpackPlugin({ template: 'client/index.tpl.html', inject: 'body', filename: 'index.html' }), และสร้างไฟล์ html ต่อไปนี้ <!doctype html> <html lang="en"> <head> ... <link href="main-295c5189923694ec44ac.min.css" rel="stylesheet"> </head> <body> <div id="app"></div> <script src="main-295c5189923694ec44ac.min.js"></script> </body> </html> วิธีนี้ใช้งานได้ดีเมื่อไปที่รูทของแอปlocalhost:3000/แต่ล้มเหลวเมื่อฉันพยายามเยี่ยมชมแอปจาก URL อื่นเช่นlocalhost:3000/items/1เนื่องจากไฟล์ที่รวมไม่ได้ถูกแทรกด้วยพา ธ สัมบูรณ์ เมื่อโหลดไฟล์ html ไฟล์จะค้นหาไฟล์ js ภายใน/itemsไดเร็กทอรีที่ไม่มีอยู่จริงเนื่องจาก react-router …

14
Regex เพื่อรับสตริงระหว่างวงเล็บปีกกา
น่าเสียดายที่แม้ว่าจะพยายามเรียนรู้ regex อย่างน้อยปีละหนึ่งครั้งเป็นเวลาหลายปีเท่าที่ฉันจำได้ แต่ฉันก็มักจะลืมไปเมื่อฉันใช้มันไม่บ่อยนัก ในปีนี้มีความละเอียดปีใหม่ของฉันคือการไม่พยายามและเรียนรู้ regex อีกครั้ง - ดังนั้นในปีนี้เพื่อช่วยฉันจากน้ำตาฉันจะให้มันไปกองมากเกิน (เรียบเรียงคริสต์มาสล่าสุด) ฉันต้องการที่จะผ่านในสตริงในรูปแบบนี้และถูกส่งกลับสตริง{getThis} getThisมีใครช่วยช่วยยึดปณิธานปีใหม่ของฉันได้ไหม คำถามที่เกี่ยวข้องใน Stack Overflow: เราจะเปลี่ยนคำพูดปกติ (เช่น ', ") เป็นคำพูด LaTeX / TeX ได้อย่างไร (เช่น` `',` `'') Regex: เพื่อดึงสตริงย่อยระหว่างสองแท็กในสตริง Regex เพื่อแทนที่ \ n ทั้งหมดใน String แต่ไม่มีสิ่งที่อยู่ในแท็ก [code] [/ code]
116 javascript  regex 

3
ส่วนขยายของ Chrome - รับเนื้อหา DOM
ฉันพยายามเข้าถึงเนื้อหา activeTab DOM จากป๊อปอัป นี่คือรายการของฉัน: { "manifest_version": 2, "name": "Test", "description": "Test script", "version": "0.1", "permissions": [ "activeTab", "https://api.domain.com/" ], "background": { "scripts": ["background.js"], "persistent": false }, "content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'", "browser_action": { "default_icon": "icon.png", "default_title": "Chrome Extension test", "default_popup": "index.html" } } ฉันสับสนจริงๆว่าสคริปต์พื้นหลัง (หน้าเหตุการณ์ที่มีการคงอยู่: เท็จ) หรือ content_scripts …

18
วิธีการแยกเหตุการณ์คลิกเดียวและเหตุการณ์คลิกสองครั้ง?
ฉันมีเพียงปุ่มเดียวใน li มี "my_id"id ฉันแนบ jQuery สองเหตุการณ์ที่มีองค์ประกอบนี้ 1 $("#my_id").click(function() { alert('single click'); }); 2 $("#my_id").dblclick(function() { alert('double click'); }); แต่ทุกครั้งมันก็ให้ single click

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.