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

JavaScript (เพื่อไม่ให้สับสนกับ Java) เป็นภาษาระดับสูง, ไดนามิก, หลายกระบวนทัศน์, ภาษาที่พิมพ์น้อยที่ใช้สำหรับทั้งฝั่งไคลเอ็นต์และฝั่งเซิร์ฟเวอร์สคริปต์ ใช้แท็กนี้สำหรับคำถามเกี่ยวกับการใช้งานทั่วไปของ ECMAScript, JavaScript, JScript ฯลฯ โดยทั่วไปแล้ว JS ไม่ได้อ้างถึง ECMA-cousin, ActionScript

1
จาวาสคริปต์ทางฝั่งไคลเอ็นต์ครอบคลุมโดย GPL อย่างไร?
หากฉันใช้ไลบรารี่ Javascript ที่มีลิขสิทธิ์ GPL ในเว็บแอปพลิเคชันฉันจะต้องเสนอซอร์สโค้ดของทั้งไซต์ให้กับทุกคนที่ดาวน์โหลดและดำเนินการ Javascript lib หรือไม่

4
ประกาศฟังก์ชั่นเป็น var แทนฟังก์ชั่น
มากขึ้นเรื่อย ๆ ฉันเห็นว่ามีการประกาศฟังก์ชั่นเช่นนี้ var foo = function() { // things }; แทนที่จะเป็นวิธีที่ฉันได้เรียนรู้เช่น function foo() { // things } ความแตกต่างคืออะไร? ประสิทธิภาพที่ดีขึ้น? ขอบเขต? ฉันควรจะใช้วิธีนี้หรือไม่?

2
ทำไม XMLHttpRequest ดูเหมือนจะไม่ปฏิบัติตามหลักการตั้งชื่อ
ฉันได้ทำงานกับวัตถุXMLHttpRequestใน JavaScript เมื่อเร็ว ๆ นี้และฉันอดไม่ได้ที่จะสังเกตว่าการใส่ชื่อนี้ไม่สมเหตุสมผล ทำไม 'XML' ทั้งหมดอยู่ในตัวพิมพ์ใหญ่ในขณะที่ 'Http' ไม่ถูกต้อง พวกเขาเป็นทั้งตัวย่อ! แน่นอนว่ามันสมเหตุสมผลกว่าสำหรับชื่อที่จะเป็นอย่างใดอย่างหนึ่งต่อไปนี้: XMLHttpRequest (PascalCase การปฏิบัติที่ดีที่สุดสำหรับชื่อชั้นใน JavaScript) xmlHttpRequest (camelCase ก็เหมือนกัน แต่ไม่ใช่สำหรับคลาส) XMLHTTPRequest (ตัวย่อสำหรับตัวย่อซึ่งไม่ค่อยใช้ในการเขียนโปรแกรม?) ฉันแน่ใจว่าจะต้องมีเหตุผลบางอย่างและฉันเกลียดที่จะคิดว่าตอนนี้มันเป็นหินเพราะไม่มีใครถามเรื่องนี้ในเวลา มีแบบแผนการตั้งชื่ออื่นที่ฉันไม่ทราบหรือไม่?

10
โปรแกรมเมอร์ใช้วิธีภาษาคงที่รับมือกับการขาดเครื่องมือ Javascript อย่างไร
ฉันตั้งโปรแกรมภาษาที่เรียบเรียงเป็นพิเศษโดยเฉพาะ Java สำหรับอาชีพของฉันเป็นส่วนใหญ่ หนึ่งในสิ่งที่ฉันโปรดปรานเกี่ยวกับ Java คือวิธีที่คุณใช้งานได้อย่างมีประสิทธิภาพและรหัสที่คุณต้องเขียนเมื่อใช้เครื่องมือเช่น Eclipse คุณสามารถ: อย่างง่ายดายและโดยอัตโนมัติ refactor วิธีการและคลาสของคุณ ดูสถานที่ทั้งหมดทันทีที่มีการเรียกใช้เมธอดหรือใช้ค่าคงที่ (ลำดับชั้นการโทรเปิด / แสดงการอ้างอิง) การพิมพ์แบบสแตติกหมายถึงคุณสามารถใช้การเติมโค้ดให้สมบูรณ์เพื่อแสดงพารามิเตอร์ / ฟังก์ชั่นทั้งหมดที่มีบนวัตถุ คลิกควบคุมที่ชื่อฟังก์ชัน / สมาชิก / คลาสเพื่อไปที่คำจำกัดความ สิ่งอำนวยความสะดวกทั้งหมดนี้ทำให้ฉันรู้สึกว่า IDE เป็นเพื่อนที่ดีที่สุดของฉัน การเขียนโค้ด Java และโดยเฉพาะการทำความเข้าใจกับโปรแกรมของคนอื่นจะง่ายขึ้นมาก อย่างไรก็ตามฉันถูกเรียกใช้มากขึ้นเรื่อย ๆ เพื่อใช้งาน Javascript และประสบการณ์ของฉันจนถึงตอนนี้ก็ค่อนข้างเชิงลบ โดยเฉพาะอย่างยิ่ง: ไม่มีวิธีการค้นหาจุดเข้าใช้งานของฟังก์ชันในทันที (นอกเหนือจากการค้นหาข้อความธรรมดาซึ่งอาจส่งผลให้มีการค้นหาวิธีการตามลำดับชั้นการโทรที่ตามมาหลังจากนั้นสองหรือสามแห่งซึ่งคุณลืมไปว่าคุณเริ่มต้นที่ไหน) พารามิเตอร์ถูกส่งผ่านไปยังฟังก์ชั่นโดยที่ไม่มีทางรู้ได้ว่าคุณสมบัติและฟังก์ชั่นใดที่มีอยู่ในพารามิเตอร์นั้น (นอกเหนือจากการรันโปรแกรมจริง ๆ แล้วนำทางไปยังจุดที่เรียกใช้ฟังก์ชันและใช้ console.logs เพื่อแสดงคุณสมบัติทั้งหมด สามารถใช้ได้) การใช้งานทั่วไปของฟังก์ชั่นที่ไม่ระบุชื่อเป็นการเรียกกลับซึ่งมักจะนำไปสู่ปาเก็ตตี้ของเส้นทางรหัสสับสนที่คุณไม่สามารถนำทางไปรอบ ๆ อย่างรวดเร็ว และแน่นอนว่า JSLint สามารถตรวจจับข้อผิดพลาดบางอย่างได้ก่อนที่จะทำการรันไทม์ …

4
เหตุใดจึงทำให้หน้าล็อกอินเป็นแอปพลิเคชันหน้าเดียวเป็นหน้าแยก
ฉันสงสัยว่าทำไมมันจึงเป็นที่นิยมที่จะมีหน้าเข้าสู่ระบบของสปาเป็นหน้าแยกที่ไม่ใช่หน้าของสปา (ในขณะที่โหลดและส่งข้อมูลผ่านคำขอ ajax)? สิ่งเดียวที่ฉันคิดได้คือความปลอดภัย แต่ฉันไม่สามารถคิดเหตุผลด้านความปลอดภัยที่เฉพาะเจาะจงได้ ฉันหมายถึงสิ่งเดียวที่นึกได้คือหากหน้าเข้าสู่ระบบของคุณในส่วนของ SPA จะส่งชื่อผู้ใช้ / รหัสผ่านผ่าน ajax ซึ่งเครื่องมือดังกล่าวสามารถมองเห็นได้เช่น firebug หรือ web inspector ถึงแม้ว่าคุณจะส่งตามปกติ คำขอ POST มีเครื่องมืออื่น ๆ ที่สามารถรวบรวมข้อมูลนี้ได้อย่างง่ายดาย (เช่นพู้ทำเล่น, httpscoop, ฯลฯ ... ) มีบางอย่างที่ฉันขาดหายไปหรือไม่?

3
การจัดการกับแคชเบราว์เซอร์ในแอพหน้าเดียว
ฉันกำลังพยายามหาวิธีจัดการแคชของเว็บเบราว์เซอร์สำหรับแอปหน้าเดียวอย่างถูกต้อง ฉันมีการออกแบบที่ค่อนข้างธรรมดา: ไฟล์ HTML, JS และ CSS หลายตัวที่ใช้งานสปาและมีข้อมูล JSON มากมายที่สปาใช้ ปัญหาเกิดขึ้นเมื่อฉันต้องการผลักดันการอัปเดต: ฉันอัปเดตส่วนคงที่ของเว็บไซต์และรหัสที่สร้าง JSON ในเวลาเดียวกัน แต่เบราว์เซอร์ไคลเอนต์มักจะมีส่วนคงที่แคชดังนั้นรหัสเก่าพยายามประมวลผลข้อมูลใหม่และ อาจ (ขึ้นอยู่กับการเปลี่ยนแปลงที่ทำ) อาจมีปัญหา (โดยเฉพาะอย่างยิ่งดูเหมือนว่า IE จะก้าวร้าวมากกว่า Chrome หรือ Firefox เกี่ยวกับการใช้แคช JS โดยไม่ต้องทำการตรวจสอบซ้ำ) วิธีที่ดีที่สุดในการจัดการกับสิ่งนี้คืออะไร? ตรวจสอบให้แน่ใจว่าการเปลี่ยนแปลง JSON ของฉันเข้ากันได้ย้อนหลังและถือว่าแคชของเบราว์เซอร์จะหมดอายุในระยะเวลาที่เหมาะสม ฝังหมายเลขรุ่นบางส่วนในทั้ง JS แบบคงที่และ JSON จากนั้นเรียกใช้งานwindow.location.reload(true);หากไม่ตรงกัน ค้นหาชุดค่าผสมที่เหมาะสมของส่วนหัว ( must-revalidateหรือno-cacheอะไรก็ตามแหล่งที่มา แตกต่างกันไปตามวิธีการทำ) เพื่อให้แน่ใจว่าเบราว์เซอร์จะตรวจสอบความถูกต้องของทรัพยากรทั้งหมดในทุก ๆ ครั้งที่โหลดซ้ำแม้ว่ามันจะหมายถึง จัดการการควบคุมแคชของฉันและหมดอายุส่วนหัวเพื่อให้เนื้อหาแบบคงที่หมดอายุเมื่อฉันต้องการผลักดันการอัปเดต อื่น ๆ อีก?

3
สร้างเว็บแอปในฝั่งเซิร์ฟเวอร์กับฝั่งไคลเอ็นต์กับลูกผสมหรือไม่ [ปิด]
ขณะนี้มีหลายวิธีในการสร้างเว็บแอปพลิเคชัน: 1. ฝั่งเซิร์ฟเวอร์เท่านั้น นี่เป็นวิธีการแบบคลาสสิกที่คุณแสดงหน้าเว็บบนเซิร์ฟเวอร์โดยเฟรมเวิร์กเว็บเช่น Ruby on Rails, Django, Express, Play! กรอบงานและอื่น ๆ เวิร์กโฟลว์ทั่วไป : สร้างตรรกะทางธุรกิจรุ่นและมุมมองแม่แบบทั้งหมดของคุณบนเซิร์ฟเวอร์ในกรอบที่คุณเลือก 2. ฝั่งไคลเอ็นต์ + REST API ไม่นานมานี้ชุมชนเว็บโดยรวมเริ่มสร้างแอปพลิเคชันฝั่งไคลเอ็นต์ใน Angular, Backbone, Ember และเฟรมเวิร์ก JavaScript MV * อื่น ๆ อีกสองสามโหล และตอนนี้เรายังมี React.js เข้าร่วมปาร์ตี้ ปรับปรุง : ไม่มีความเข้าใจผิด สิ่งที่ฉันหมายถึงโดยลูกค้าฝั่งเดียวคือการแยกความกังวลอย่างสมบูรณ์ คุณมีเซิร์ฟเวอร์ REST API และแอปพลิเคชันฝั่งไคลเอ็นต์ที่พูดคุยกับเซิร์ฟเวอร์นั้น ขึ้นอยู่กับกรณีการใช้งานของคุณมีความเป็นไปได้ที่คุณจะไม่มีแอปพลิเคชันฝั่งไคลเอ็นต์จริงที่ไม่ได้เชื่อมต่อกับแบ็คเอนด์อย่างใดอย่างหนึ่งสำหรับการตรวจสอบสิทธิ์หรือการคงอยู่ของข้อมูล เวิร์กโฟลว์ทั่วไป : ใช้เวลาเป็นชั่วโมงตัดสินใจเลือก Angular vs Backbone กับ …

2
ASM.js คืออะไรและมีความหมายสำหรับทุกคนอย่างไร
ฉันเริ่มที่จะคำรามได้ยินเกี่ยวกับโครงการนี้เรียกว่าASM.js ปัจจุบันเว็บไซต์ของพวกเขาน่ากลัวและสับสน นี่คือสิ่งที่ฉันรู้จากการวิจัยของฉันบนเว็บ เป็นชุดย่อยของ JavaScript ที่สามารถปรับให้เหมาะสมอย่างมาก ฉันเดาเพราะมันหลีกเลี่ยงส่วนที่มีพลังมากขึ้นของภาษา ประสิทธิภาพของโค้ดที่คอมไพล์ไปยัง ASM.js จะทำงานที่ความเร็วประมาณครึ่งหนึ่งของ C (ไม่ใช่แสง) จุดประสงค์สำหรับผู้รวบรวมเพื่อสร้างภาษาเป้าหมาย ASM.js Firefox กำลังจะจัดส่งพร้อมกับการเพิ่มประสิทธิภาพ ASM.js อบใน ทีมงาน Mozilla และ Unreal นำพาUnreal Engine ไปยังเว็บด้วยมันและทำงานในรูปแบบของFirefoxด้วยความเร็วใกล้เคียง ดูเหมือนจะไม่มีข้อมูลที่เป็นรูปธรรมใด ๆ บนเว็บเกี่ยวกับสิ่งที่เป็นจริงหรือมีประโยชน์หรือจุดประสงค์สุดท้าย เป็นเพราะฉันสามารถรวบรวมฐานรหัสฝั่งเซิร์ฟเวอร์ของฉันและเรียกใช้ในเบราว์เซอร์ที่ความเร็วใกล้เคียง สิ่งที่เป็นประโยชน์สำหรับนักพัฒนา?

3
WebStorm มีฟังก์ชันการทำงานใดที่ RubyMine ไม่ทำงาน
ฉันกำลังมองหาซื้อ Rubymine ในขณะที่ฉันกำลังทำทับทิมอยู่เล็กน้อย แต่ก็มี html5 / javascript จำนวนมาก ฉันจะได้รับ Webstorm เพราะฉันมีเฟรมเวิร์ค / แอพ html5 / js ล้วนๆที่ฉันทำงานอยู่อย่างไรก็ตามจากนั้นฉันก็อ่านว่า WebStorm / PhpStorm / Rubymine เป็นต้นล้วนแล้วแต่อยู่ในกรอบความคิดของพวกเขา แต่ละเฟรมเวิร์กมีฟังก์ชันการทำงานของ WebStorm อยู่แล้วนอกเหนือจากฟีเจอร์บางอย่างที่ไม่ได้อยู่ในกล่อง แต่สามารถเพิ่มผ่านปลั๊กอินได้ คุณสมบัติหลักที่ฉันสนใจเกี่ยวกับ WebStorm คือ: การทดสอบหน่วย JS จาก IDE ความคุ้มครอง JS Lint / Hint ภายใน UI การเปลี่ยนโครงสร้าง DOM / JS / Intellisense การสนับสนุน coffeescript การรวม …
27 javascript  ide  ruby 

12
JavaScript กลายเป็นที่นิยมได้อย่างไร
ในประวัติศาสตร์โบราณเบรนแดนอีชมีการออกแบบภาษาและในโลกปัจจุบัน JavaScript เป็นภาษาที่ได้รับความนิยมนำไปใช้และนำไปใช้ในหลาย ๆ ที่ อะไรทำให้ภาษาเป็นที่นิยม เป็นไวยากรณ์แบบ C ที่คุ้นเคยกับโปรแกรมเมอร์ก่อนหน้าหรือไม่ Netscape มีการควบคุมตลาดเพียงพอที่จะบังคับให้ใช้หรือไม่? หรือมีเหตุผลบางอย่างที่ทำให้ JavaScript เป็นที่นิยมและภาษาอื่นไม่ได้? โดยเฉพาะอย่างยิ่งถ้าคุณต้องสร้างภาษาที่ได้รับความนิยมอย่างจาวาสคริปต์คุณจะต้องสร้างเงื่อนไขอะไรขึ้นมาใหม่เพื่อสร้างความนิยม

2
ทำไมการส่งผ่านฟังก์ชั่นที่ไม่ระบุชื่อขนาดใหญ่เป็นข้อโต้แย้งไปยังฟังก์ชั่นอื่น ๆ จึงได้รับการยอมรับใน JavaScript
ฉันมีความเห็น (ซึ่งฉันแน่ใจว่าจะแบ่งปันโดย) ว่าการส่งผ่านฟังก์ชั่นนิรนามซึ่งมีโค้ดมากกว่าสองสามบรรทัดเนื่องจากข้อโต้แย้งไปยังฟังก์ชั่นอื่น ๆ นั้นส่งผลกระทบต่อความสามารถในการอ่านและจัดทำเอกสารด้วยตนเองอย่างรุนแรง จะดีกว่าสำหรับทุกคนที่มีโอกาสใช้รหัสเพื่อประกาศฟังก์ชั่นที่มีชื่อ หรืออย่างน้อยก็กำหนดฟังก์ชั่นที่ไม่ระบุชื่อให้กับตัวแปรก่อนที่จะประกาศฟังก์ชั่นหลัก อย่างไรก็ตามไลบรารีJavaScriptจำนวนมาก(jQuery, d3.js / NVD3.js) เพียงแค่ให้ตัวอย่างสองสามตัวอย่างใช้ฟังก์ชันขนาดใหญ่ด้วยวิธีนี้ ทำไมจึงเป็นที่ยอมรับอย่างกว้างขวางใน JavaScript? มันเป็นสิ่งที่เกี่ยวกับวัฒนธรรมหรือมีข้อได้เปรียบที่ฉันขาดไปซึ่งจะทำให้การใช้งานเป็นที่นิยมมากกว่าการประกาศฟังก์ชั่นที่มีชื่อ?

4
อะไรเป็นตัวกำหนดว่าฟังก์ชั่น Javascript ใดบ้างที่ถูกบล็อกเทียบกับการไม่บล็อก?
ฉันได้ทำ Javascript บนเว็บ (วานิลลา JS, jQuery, Backbone ฯลฯ ) มาหลายปีแล้วและเมื่อไม่นานมานี้ฉันได้ทำงานกับ Node.js ฉันใช้เวลาสักครู่เพื่อหยุดการเขียนโปรแกรม "non-blocking" แต่ตอนนี้ฉันคุ้นเคยกับการใช้ callback สำหรับการดำเนินการ IO และอะไรก็ตาม ฉันเข้าใจว่า Javascript นั้นเป็นเธรดเดียวโดยธรรมชาติ ฉันเข้าใจแนวคิดของโหนด "คิวเหตุการณ์" สิ่งที่ฉันไม่เข้าใจคือสิ่งที่กำหนดว่าการดำเนินการจาวาสคริปต์แต่ละรายการนั้นคือ "การบล็อก" กับ "การไม่บล็อก" ฉันจะทราบได้อย่างไรว่าการดำเนินการใดที่ฉันสามารถพึ่งพาเพื่อสร้างเอาต์พุตแบบซิงโครนัสสำหรับฉันที่จะใช้ในโค้ดในภายหลังและอันไหนที่ฉันจะต้องผ่านการเรียกกลับเพื่อให้ฉันสามารถประมวลผลเอาท์พุทได้ มีรายการฟังก์ชั่น Javascript ที่อื่นที่ไม่ตรงกัน / ไม่บล็อกและรายการของฟังก์ชันที่ซิงโครนัส / บล็อกหรือไม่ อะไรที่ทำให้แอพ Javascript ของฉันไม่เป็นหนึ่งในการแข่งขันที่ยิ่งใหญ่ ฉันรู้ว่าการดำเนินการที่ใช้เวลานานเช่นการปฏิบัติการ IO ในการดำเนินงาน Node และ AJAX บนเว็บต้องการให้มีการแบบอะซิงโครนัสดังนั้นจึงใช้การเรียกกลับ - แต่ใครจะพิจารณาว่าคุณสมบัติใดเป็น "เวลานาน"? มีการจัดเรียงของทริกเกอร์ภายในการดำเนินการเหล่านี้ที่ลบออกจาก "คิวเหตุการณ์" …

11
จาวาสคริปต์นั้นคุ้มค่าหรือไม่หากคุณไม่ได้วางแผนที่จะเป็นนักพัฒนาเว็บ?
ฉันได้ยินว่า Javascript เป็นภาษาเต็มรูปแบบเหมือนกับ c ++ มันเป็นเรื่องจริงเหรอ? มีอะไรอีกที่ดีสำหรับการเขียนโปรแกรมนอกเหนือจากเว็บ
26 javascript 

9
ละอายใจที่จะยอมรับการใช้ jQuery? [ปิด]
เป็นการยากที่จะบอกสิ่งที่ถูกถามที่นี่ คำถามนี้คลุมเครือคลุมเครือไม่สมบูรณ์กว้างเกินไปหรือโวหารและไม่สามารถตอบได้อย่างสมเหตุสมผลในรูปแบบปัจจุบัน สำหรับความช่วยเหลือในการทำความเข้าใจคำถามนี้เพื่อที่จะสามารถเปิด, ไปที่ศูนย์ช่วยเหลือ ปิดให้บริการใน8 ปีที่ผ่านมา คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Software Engineering Stack Exchange อพยพ 8 ปีที่ผ่านมา สิ่งที่ฉันสังเกตเห็นในช่วงสองสามสัปดาห์ที่ผ่านมาคือจำนวนเว็บไซต์เชิงพาณิชย์ขนาดใหญ่ที่ใช้ jQuery รวมกับปลั๊กอินจำนวนมาก - แต่ไม่ยอมรับ พวกเขาจะเปลี่ยนชื่อไลบรารีหลักเป็นสิ่งที่คลุมเครือเช่นเดียวกับปลั๊กอิน ค่อนข้างน้อยจะลบความคิดเห็นที่มีข้อมูลใบอนุญาต MIT / GPL (เพิ่งสังเกตุในวันนี้ว่า odeon.co.uk ทำสิ่งนี้อย่างแน่นอน) ทำไมพวกเขาถึงทำเช่นนี้? พวกเขาถูกทำร้ายโดยใบหน้าที่พวกเขาใช้ห้องสมุดโอเพ่นซอร์สฟรีหรือเปล่า?

2
รหัส Javascript เป็นแบบอะซิงโครนัสอย่างไรเมื่อใช้การเรียกกลับ
ฉันอ่านออนไลน์มากมายพยายามหาวิธีเขียนโค้ด JavaScript แบบอะซิงโครนัส หนึ่งในเทคนิคที่เกิดขึ้นมากในการวิจัยของฉันคือการใช้การโทรกลับ ในขณะที่ฉันเข้าใจกระบวนการเขียนและเรียกใช้ฟังก์ชันการเรียกกลับฉันสับสนว่าเหตุใดการเรียกกลับที่ดูเหมือนจะทำให้การเรียกใช้ JavaScript แบบอะซิงโครนัสโดยอัตโนมัติ ดังนั้นคำถามของฉันคือการเพิ่มฟังก์ชั่นการโทรกลับไปยังรหัส JavaScript ของฉันทำให้รหัสดังกล่าวเป็นแบบอะนาล็อกอัตโนมัติอย่างไร

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