Когато се опитам да стартирам програмата c++ по-долу, тя ми дава грешка при компилиране... Докато, ако се опитам да стартирам втората програма на javascript по-долу, тя не ми дава никаква грешка Защо?
////c++////
#include<iostream>
using namespace std;
void display(){
cout << num << endl; // error: num is not defined in this scope
}
int num = 30;
int main(){
return 0;
}
/////javascript////
function display(){
console.log(num) // no error
}
let num = 25;
display()
В случай на c++ променливата num не е декларирана на най-високо ниво, затова ми дава грешка.... Но в случай на javaScript променливата 'num' не е декларирана на най-високо ниво, но не дава никаква грешка... Защо това се случва?
Очаквах грешка и в js....
function display(){
console.log(name)
}
let name = 'hi'
function test(){
var name = 'Hello'
display()
}
test() // output : hi
num
динамично, когатоdisplay()
се изпълнява. И така, докатоdisplay()
се изпълнява,num
е в родителския обхват и има стойност, така че интерпретаторът е доволен. - person jfriend00   schedule 27.07.2019