Когда я пытаюсь запустить приведенную ниже программу С++, она дает мне ошибку компиляции... В то время как, если я пытаюсь запустить вторую программу 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