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

ขอบเขตคือบริบทที่ล้อมรอบซึ่งเกี่ยวข้องกับค่าและนิพจน์ ใช้แท็กนี้สำหรับคำถามเกี่ยวกับขอบเขตประเภทต่าง ๆ รวมถึงคำถามที่ขอบเขตไม่ชัดเจน

30
การปิด JavaScript ทำงานอย่างไร
คำตอบของคำถามนี้เป็นความพยายามของชุมชน แก้ไขคำตอบที่มีอยู่เพื่อปรับปรุงโพสต์นี้ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ Наэтотвопросестьответына Stack Overflow нарусском : Какработаютзамыканияв JavaScript คุณจะอธิบายวิธีปิด JavaScript ให้คนที่มีความรู้เกี่ยวกับแนวคิดที่พวกเขาประกอบด้วย (เช่นฟังก์ชั่นตัวแปรและสิ่งที่คล้ายกัน) แต่ไม่เข้าใจว่าปิดตัวเองได้อย่างไร ฉันเคยเห็นตัวอย่างโครงการที่ให้ไว้ใน Wikipedia แต่น่าเสียดายที่มันไม่ได้ช่วย

30
อะไรคือความแตกต่างระหว่างการใช้ "ปล่อย" และ "var"
ECMAScript 6 แนะนำคำสั่งlet ฉันได้ยินมาว่ามันอธิบายว่าเป็นตัวแปร "ท้องถิ่น" แต่ฉันก็ยังไม่แน่ใจว่ามันจะทำงานแตกต่างจากvarคำหลักได้อย่างไร อะไรคือความแตกต่าง? ควรletใช้มากกว่าเมื่อvarใด

19
การใช้ตัวแปรโกลบอลในฟังก์ชั่น
ฉันจะสร้างหรือใช้ตัวแปรโกลบอลในฟังก์ชันได้อย่างไร ถ้าฉันสร้างตัวแปรโกลบอลในฟังก์ชันหนึ่งฉันจะใช้ตัวแปรโกลบอลนั้นในฟังก์ชันอื่นได้อย่างไร ฉันต้องจัดเก็บตัวแปรโกลบอลในตัวแปรโลคัลของฟังก์ชันที่ต้องการเข้าถึงหรือไม่?

26
ขอบเขตของตัวแปรใน JavaScript คืออะไร?
ขอบเขตของตัวแปรในจาวาสคริปต์คืออะไร? พวกเขามีขอบเขตเดียวกันภายในเมื่อเทียบกับฟังก์ชั่นภายนอกหรือไม่? หรือว่ามันสำคัญ นอกจากนี้ยังมีการจัดเก็บตัวแปรหากพวกเขาถูกกำหนดทั่วโลก?


4
มีเหตุผลสำหรับการใช้ตัวแปร C # ซ้ำใน foreach หรือไม่?
เมื่อใช้แลมบ์ดานิพจน์หรือวิธีที่ไม่ระบุตัวตนใน C # เราต้องระวังการเข้าถึงหลุมพรางปิดที่มีการแก้ไข ตัวอย่างเช่น: foreach (var s in strings) { query = query.Where(i => i.Prop == s); // access to modified closure ... } เนื่องจากการปิดการปรับเปลี่ยนรหัสดังกล่าวข้างต้นจะทำให้ทั้งหมดของคำสั่งในการค้นหาให้เป็นไปตามค่าสุดท้ายของWheres ดังที่อธิบายไว้ที่นี่สิ่งนี้เกิดขึ้นเพราะsตัวแปรที่ประกาศในforeachลูปด้านบนถูกแปลเช่นนี้ในคอมไพเลอร์: string s; while (enumerator.MoveNext()) { s = enumerator.Current; ... } แทนที่จะเป็นเช่นนี้: while (enumerator.MoveNext()) { string s; s = enumerator.Current; ... } ดังที่กล่าวไว้ที่นี่ไม่มีข้อได้เปรียบด้านประสิทธิภาพในการประกาศตัวแปรภายนอกลูปและภายใต้สถานการณ์ปกติเหตุผลเดียวที่ฉันคิดได้สำหรับการทำเช่นนี้คือถ้าคุณวางแผนที่จะใช้ตัวแปรนอกขอบเขตของลูป: string …

17
ฉันจะเข้าถึงผลลัพธ์ของสัญญาก่อนหน้านี้ในห่วงโซ่แล้ว. () ได้อย่างไร
ฉันได้ปรับโครงสร้างรหัสของฉันให้เป็นสัญญาและสร้างห่วงโซ่สัญญาที่มีความยาวอันยอดเยี่ยมซึ่งประกอบด้วยการ.then()เรียกกลับหลายครั้ง ในที่สุดผมต้องการที่จะกลับบางค่าคอมโพสิตและจำเป็นที่จะต้องเข้าถึงหลายผลสัญญากลาง อย่างไรก็ตามค่าความละเอียดจากจุดกึ่งกลางของลำดับไม่อยู่ในขอบเขตในการโทรกลับครั้งล่าสุดฉันจะเข้าถึงได้อย่างไร function getExample() { return promiseA(…).then(function(resultA) { // Some processing return promiseB(…); }).then(function(resultB) { // More processing return // How do I gain access to resultA here? }); }

8
วัตถุประสงค์ของการห่อไฟล์ Javascript ทั้งหมดในฟังก์ชั่นที่ไม่ระบุชื่อเช่น“ (function () {…}) ()” คืออะไร?
ฉันได้อ่านจาวาสคริปต์จำนวนมากเมื่อเร็ว ๆ นี้และฉันได้สังเกตเห็นว่าไฟล์ทั้งหมดถูกห่อเหมือนไฟล์ต่อไปนี้ในไฟล์. js ที่จะนำเข้า (function() { ... code ... })(); อะไรคือเหตุผลในการทำสิ่งนี้มากกว่าฟังก์ชั่นคอนสตรัคเตอร์ที่เรียบง่าย?

12
JavaScript ปิดกับฟังก์ชั่นที่ไม่ระบุชื่อ
เพื่อนของฉันและฉันกำลังพูดถึงสิ่งที่ปิดใน JS และสิ่งที่ไม่ เราแค่ต้องการให้แน่ใจว่าเราเข้าใจมันอย่างถูกต้อง ลองดูตัวอย่างนี้ เรามีการนับลูปและต้องการพิมพ์ตัวแปรตัวนับบนคอนโซลล่าช้า ดังนั้นเราจึงใช้setTimeoutและปิดเพื่อจับค่าของตัวแปรตัวนับเพื่อให้แน่ใจว่ามันจะไม่พิมพ์ N คูณค่า N วิธีการแก้ปัญหาที่ผิดโดยไม่ปิดหรืออะไรก็ตามที่ใกล้กับการปิดคือ: for(var i = 0; i < 10; i++) { setTimeout(function() { console.log(i); }, 1000); } ซึ่งแน่นอนว่าจะพิมพ์ค่าของiลูปหลัง10 เท่าคือ 10 ดังนั้นความพยายามของเขาคือ: for(var i = 0; i < 10; i++) { (function(){ var i2 = i; setTimeout(function(){ console.log(i2); }, 1000) })(); } …

12
กำหนดตัวแปรโกลบอลในฟังก์ชัน JavaScript
เป็นไปได้หรือไม่ที่จะกำหนดตัวแปรส่วนกลางในฟังก์ชัน JavaScript? ฉันต้องการใช้trailimageตัวแปร (ประกาศในmakeObjฟังก์ชั่น) ในฟังก์ชั่นอื่น ๆ <html xmlns="http://www.w3.org/1999/xhtml"> <head id="Head1" runat="server"> <title></title> <script type="text/javascript"> var offsetfrommouse = [10, -20]; var displayduration = 0; var obj_selected = 0; function makeObj(address) { **var trailimage = [address, 50, 50];** document.write('<img id="trailimageid" src="' + trailimage[0] + '" border="0" style=" position: absolute; visibility:visible; left: 0px; …

19
วิธีที่ถูกต้องในการสื่อสารระหว่างตัวควบคุมใน AngularJS คืออะไร?
วิธีที่ถูกต้องในการสื่อสารระหว่างตัวควบคุมคืออะไร? ฉันกำลังใช้เรื่องเหลวไหลที่น่ากลัวเกี่ยวกับwindow: function StockSubgroupCtrl($scope, $http) { $scope.subgroups = []; $scope.handleSubgroupsLoaded = function(data, status) { $scope.subgroups = data; } $scope.fetch = function(prod_grp) { $http.get('/api/stock/groups/' + prod_grp + '/subgroups/').success($scope.handleSubgroupsLoaded); } window.fetchStockSubgroups = $scope.fetch; } function StockGroupCtrl($scope, $http) { ... $scope.select = function(prod_grp) { $scope.selectedGroup = prod_grp; window.fetchStockSubgroups(prod_grp); } }
473 scope  angularjs 

8
คำอธิบายสั้น ๆ ของกฎการกำหนดขอบเขต?
สิ่งที่ว่าเป็นงูหลามกฎกำหนดขอบเขต? ถ้าฉันมีรหัส: code1 class Foo: code2 def spam..... code3 for code4..: code5 x() อยู่ที่ไหนxพบ? ตัวเลือกที่เป็นไปได้ ได้แก่ รายการด้านล่าง: ในไฟล์ต้นฉบับที่ล้อมรอบ ในเนมสเปซของคลาส ในการกำหนดฟังก์ชั่น ในตัวแปร for loop index ข้างในสำหรับวง นอกจากนี้ยังมีบริบทระหว่างการดำเนินการเมื่อฟังก์ชั่นspamจะถูกส่งไปที่อื่น และฟังก์ชั่นแลมบ์ดาอาจแตกต่างกันบ้างเล็กน้อย? จะต้องมีการอ้างอิงหรืออัลกอริทึมง่าย ๆ มันเป็นโลกที่สับสนสำหรับโปรแกรมเมอร์ Python ระดับกลาง

2
วิธีการเลือกขอบเขตถั่วที่เหมาะสม?
ฉันสังเกตเห็นว่ามีขอบเขตถั่วที่แตกต่างกันเช่น: @RequestScoped @ViewScoped @FlowScoped @SessionScoped @ApplicationScoped จุดประสงค์ของแต่ละคนคืออะไร? ฉันจะเลือกขอบเขตที่เหมาะสมสำหรับถั่วของฉันได้อย่างไร
381 jsf  jsf-2  scope  managed-bean 

10
สิ่งที่รองรับ JavaScript นี้สำนวน: var self = this?
ฉันเห็นสิ่งต่อไปนี้ในแหล่งที่มาสำหรับการสาธิตหมายเหตุการจัดเก็บ WebKit HTML 5 SQL : function Note() { var self = this; var note = document.createElement('div'); note.className = 'note'; note.addEventListener('mousedown', function(e) { return self.onMouseDown(e) }, false); note.addEventListener('click', function() { return self.onNoteClick() }, false); this.note = note; // ... } ผู้เขียนใช้ตัวเองในบางสถานที่ (ร่างกายฟังก์ชั่น) และสิ่งนี้ในสถานที่อื่น ๆ (ร่างกายของฟังก์ชั่นที่กำหนดไว้ในรายการอาร์กิวเมนต์ของวิธีการ) เกิดอะไรขึ้น? ตอนนี้ฉันสังเกตเห็นครั้งหนึ่งฉันจะเริ่มเห็นมันทุกที่หรือไม่?

7
ทำไม Const` เริ่มต้นส่งออกไม่ถูกต้อง
ฉันเห็นว่าต่อไปนี้เป็นเรื่องปกติ: const Tab = connect( mapState, mapDispatch )( Tabs ); export default Tab; อย่างไรก็ตามสิ่งนี้ไม่ถูกต้อง: export default const Tab = connect( mapState, mapDispatch )( Tabs ); แต่นี่เป็นเรื่องปกติ: export default Tab = connect( mapState, mapDispatch )( Tabs ); สิ่งนี้สามารถอธิบายได้โปรดทำไมถึงconstไม่ถูกต้องด้วยexport default? มันเป็นการเพิ่มที่ไม่จำเป็น & สิ่งใด ๆ ที่ประกาศว่าexport defaultมีการสันนิษฐานว่าเป็นconstเช่นนั้นหรือไม่?

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