Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带var和不带var的javascript变量之间的差异?_Javascript_Jquery_Variables_Scope_Var - Fatal编程技术网

带var和不带var的javascript变量之间的差异?

带var和不带var的javascript变量之间的差异?,javascript,jquery,variables,scope,var,Javascript,Jquery,Variables,Scope,Var,以下两种说法的区别是什么 var temp = 10; temp = 10; 如果在函数中声明一个带有“var”的变量,则该变量将是函数的局部变量,否则js引擎将开始在局部范围(函数)中查找该变量,如果未找到该变量,则将在globalspace中自动声明该变量 通过此链接: 当您声明一个全局JavaScript变量时,您实际上是什么 这样做是定义全局对象(全局对象)的属性。 如果您使用var来声明变量,那么创建的属性 是不可配置的(请参见属性属性),这意味着 无法使用删除运算符删除 然后,如果

以下两种说法的区别是什么

var temp = 10;
temp = 10;

如果在函数中声明一个带有“var”的变量,则该变量将是函数的局部变量,否则js引擎将开始在局部范围(函数)中查找该变量,如果未找到该变量,则将在globalspace中自动声明该变量

通过此链接:

当您声明一个全局JavaScript变量时,您实际上是什么 这样做是定义全局对象(全局对象)的属性。 如果您使用var来声明变量,那么创建的属性 是不可配置的(请参见属性属性),这意味着 无法使用删除运算符删除

然后,如果在函数内或全局空间(在任何函数外)执行此操作:

温度=10

您可以在任何地方使用它,如:

控制台日志(窗口温度)

只是一堆嵌套函数(从内部开始阅读代码注释,以便更好地理解):

如果在函数中使用
var
声明它,则不能执行
window.temp
,如果在函数中执行,则该变量将是函数的“局部”,即:

foo = 1;
function test() {
    var foo = 'bar';
}
test();
alert(foo);

// Result: 1

还请注意,在全局空间(外部)中使用“var”将创建一个全局变量(窗口对象中的属性)
顺便说一句,始终使用var。

在全局范围内定义变量时,您可以在任何地方访问它。如果使用it var重新定义它,那么该变量仅在当前范围内具有该值

在全局范围中定义变量:

var a = 1;
现在,您可以通过函数的作用域访问它,如下所示:

function print() {
  console.log(window.a); // 1
  window.a = 5;
  anotherFunction(); // 5 
  var a = 3;
  console.log(a); // 3
}
function anotherFunction() {
  console.log(a); // 5;
}

这是一个范围前缀。var使局部,没有使全局或在严格条件下出错。@dandavis——如果我在函数中使用“temp=10;”,那么它将是全局的或该函数的局部?@DixitSingla显然是全局的:
function f(){temp=1};f();温度;//1
。那么为什么这段代码会在9中输出(console.log('in',temp))(console.log('out',temp))会说temp未定义它将永远不会执行“function x”temp在anom函数中声明,它在内部工作,因为你在自执行函数,外部无法工作,因为isnt'declare it,function x()从未被调用,然后不会修改temp,如果执行此操作,则第一个console.log的x()temp将为10,因为在上一个作用域中“find”temp(来自anom函数)
function print() {
  console.log(window.a); // 1
  window.a = 5;
  anotherFunction(); // 5 
  var a = 3;
  console.log(a); // 3
}
function anotherFunction() {
  console.log(a); // 5;
}