2016-04-13 14 views
0

Bir iş görüşmesi için çalışıyordum ve JavaScript'i incelemeye başladım. Bununla geldi. YaniKatı modda değerlendirmek için dolaylı çağrı. X'e ne olur?

:

"use strict"; 

var x = 0; 
var y = 0; 

eval("x=3;y=11;"); //direct call to eval in global scope 

console.log("x: " + x); // outputs 3 
console.log("y: " + y); // outputs 11 

Ama: Ben eval çalıştırıldığında x ile olur anlamak/bilmiyorum

"use strict"; 

var x = 0; 

(0, eval)("x=3;y=11;"); //indirect call to eval in global scope 

console.log("x: " + x); // outputs 0 because the strict mode won't allow the reassignment? 
console.log("y: " + y); // outputs 11 

. Görevden katı mod ile biliyorum ödev sorunum yok. Bunu bana açıklamak isteyen var mı? Teşekkürler!

+1

Konsolumda 3 benim için yazdırır. –

+1

^Aynı. Bu kodu hangi ortamda çalıştırıyorsunuz? –

+0

her iki kod bölümü de benim için aynı çalışıyor –

cevap

0

Node.js değişkenleri nasıl işledikleri (genel olarak varsayılan değil) olarak görünüyor. Dolaylı dolaysız çağrı, global nesneye atandı.

"use strict"; 

var x = 0; 

(0,eval)("x=3;y=11;"); 
x++; 
console.log("x: " + x); // outputs 1 
console.log("global x: " + global.x); // outputs 3 
console.log("y: " + y); // outputs 11 
+2

Bu değişkenlerin node :-)'de * global olmadığına benziyor. – Bergi

İlgili konular