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

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

5
การเรียก "ชื่อส่วนกลาง" foo "ไม่ได้กำหนดไว้" ด้วยเวลาของ Python
ฉันพยายามค้นหาว่าต้องใช้เวลาเท่าไรในการดำเนินการคำสั่ง Python ดังนั้นฉันจึงดูออนไลน์และพบว่าไลบรารีมาตรฐานมีโมดูลที่เรียกว่าtimeitซึ่งอ้างว่าจะทำอย่างนั้น: import timeit def foo(): # ... contains code I want to time ... def dotime(): t = timeit.Timer("foo()") time = t.timeit(1) print "took %fs\n" % (time,) dotime() อย่างไรก็ตามสิ่งนี้ก่อให้เกิดข้อผิดพลาด: Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 3, in dotime File "/usr/local/lib/python2.6/timeit.py", …
92 python  scope  timeit 

18
การกำหนดขอบเขตและการยกฟังก์ชั่น Javascript
ฉันเพิ่งอ่านบทความดีๆเกี่ยวกับJavaScript Scoping and Hoisting โดย Ben Cherryซึ่งเขายกตัวอย่างต่อไปนี้: var a = 1; function b() { a = 10; return; function a() {} } b(); alert(a); เมื่อใช้โค้ดด้านบนเบราว์เซอร์จะแจ้งเตือน "1" ฉันยังไม่แน่ใจว่าเหตุใดจึงส่งคืน "1" บางสิ่งที่เขาพูดในใจเช่น: การประกาศฟังก์ชันทั้งหมดถูกยกขึ้นไปด้านบน คุณสามารถกำหนดขอบเขตตัวแปรโดยใช้ฟังก์ชัน ยังไม่คลิกสำหรับฉัน

6
แปลกใจที่ตัวแปรส่วนกลางมีค่าที่ไม่ได้กำหนดใน JavaScript
วันนี้ฉันรู้สึกประหลาดใจมากเมื่อเห็นว่าตัวแปรส่วนกลางมีundefinedค่าในบางกรณี ตัวอย่าง: var value = 10; function test() { //A console.log(value); var value = 20; //B console.log(value); } test(); เรียกใช้ข้อมูลโค้ดHide resultsขยายข้อมูลโค้ด ให้เอาต์พุตเป็น undefined 20 ที่นี่เหตุใดเครื่องมือ JavaScript จึงพิจารณาค่าส่วนกลางเป็นundefined? ฉันรู้ว่า JavaScript เป็นภาษาที่ตีความได้ สามารถพิจารณาตัวแปรในฟังก์ชันได้อย่างไร? นั่นเป็นข้อผิดพลาดจากเอ็นจิ้น JavaScript หรือไม่?
89 javascript  scope 

3
Angularjs ขอบเขตการส่งผ่านระหว่างเส้นทาง
ฉันมีสถานการณ์ที่มีรูปแบบที่ขยายไปหลายหน้า (อาจไม่เหมาะ แต่เป็นอย่างนั้น) ฉันต้องการให้มีขอบเขตเดียวสำหรับแบบฟอร์มทั้งหมดที่ได้รับการกรอกข้อมูลในขณะที่คุณดำเนินการดังนั้นหากผู้ใช้ไปมาระหว่างขั้นตอนต่างๆคุณจะจำสถานะได้ง่าย ดังนั้นฉันต้องทำในรหัสหลอกมาก: ชุด $scope.val = <Some dynamic data> คลิกลิงก์และกำหนดเส้นทางไปยังเทมเพลตใหม่ (อาจใช้คอนโทรลเลอร์เดียวกัน) $scope.val ควรจะยังคงเป็นค่าเดียวกับในหน้าสุดท้าย ข้อมูลที่มีอยู่อย่างต่อเนื่องสำหรับขอบเขตเป็นวิธีที่ถูกต้องในการดำเนินการนี้หรือมีวิธีอื่นหรือไม่? คุณสามารถสร้างคอนโทรลเลอร์ที่มีขอบเขตต่อเนื่องระหว่างเส้นทางได้หรือไม่ยกเว้นการบันทึกไว้ในฐานข้อมูลแน่นอน

1
เหตุใดฉันจึงประกาศตัวแปรลูกที่มีชื่อเดียวกันกับตัวแปรในขอบเขตพาเรนต์
ฉันเขียนโค้ดบางส่วนเมื่อเร็ว ๆ นี้ซึ่งฉันนำชื่อตัวแปรมาใช้ซ้ำโดยไม่ได้ตั้งใจเป็นพารามิเตอร์ของการดำเนินการที่ประกาศไว้ในฟังก์ชันที่มีตัวแปรชื่อเดียวกันอยู่แล้ว ตัวอย่างเช่น: var x = 1; Action<int> myAction = (x) => { Console.WriteLine(x); }; เมื่อฉันเห็นการทำสำเนาฉันรู้สึกประหลาดใจเมื่อเห็นว่าโค้ดรวบรวมและทำงานได้อย่างสมบูรณ์แบบซึ่งไม่ใช่พฤติกรรมที่ฉันคาดหวังจากสิ่งที่ฉันรู้เกี่ยวกับขอบเขตใน C # บาง Googling รวดเร็วเปิดขึ้นดังนั้นคำถามที่บ่นว่ารหัสที่คล้ายกันไม่สร้างข้อผิดพลาดเช่นแลมบ์ดาขอบเขตชี้แจง (ฉันวางโค้ดตัวอย่างนั้นลงใน IDE ของฉันเพื่อดูว่ามันจะทำงานได้หรือไม่เพื่อให้แน่ใจว่ามันจะทำงานได้อย่างสมบูรณ์) นอกจากนี้เมื่อฉันป้อนกล่องโต้ตอบเปลี่ยนชื่อใน Visual Studio สิ่งแรกxจะถูกเน้นเป็นชื่อที่ขัดแย้งกัน ทำไมรหัสนี้ใช้งานได้? ฉันใช้ C # 8 กับ Visual Studio 2019

1
อาร์กิวเมนต์เริ่มต้น Javascript ที่มีการกำหนดขอบเขตบล็อกล้มเหลวบน iOS เท่านั้น
try { const val = 'correct value'; (() => { ((arg = val) => { const val = 'ignored value'; alert(arg); })(); })(); } catch (err) { alert(err.message || 'Unknown error'); } เรียกใช้ข้อมูลโค้ดซ่อนผลลัพธ์ขยายตัวอย่างข้อมูล บน OS X Chrome, OS X Safari, Android Chrome, Windows Chrome, Windows Firefox และแม้แต่ Windows Edge จะแจ้งเตือน …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.