Javascript 函数参数作为局部变量名称的数字
我刚刚阅读了关于“在函数中设置全局变量”的答案,但我仍然有疑问 这可能是非常基本的,但有人能告诉我为什么我这样做时不会发生错误吗?我知道传递给函数的是变量I值的副本,但是。。。为什么Javascript 函数参数作为局部变量名称的数字,javascript,Javascript,我刚刚阅读了关于“在函数中设置全局变量”的答案,但我仍然有疑问 这可能是非常基本的,但有人能告诉我为什么我这样做时不会发生错误吗?我知道传递给函数的是变量I值的副本,但是。。。为什么 var i = 5; function exp(i) { i = 7; console.log(i); } exp(i); //logs 7 或 以及: 在第一个例子中,我不是使5=7吗?为什么函数会记录“7” 这一切都是在我在关于局部变量的精彩文章中看到这个例子之后出现的: // globa
var i = 5;
function exp(i) {
i = 7;
console.log(i);
}
exp(i);
//logs 7
或
以及:
在第一个例子中,我不是使5=7吗?为什么函数会记录“7”
这一切都是在我在关于局部变量的精彩文章中看到这个例子之后出现的:
// global scope
var foo = 1;
var bar = 2;
var i = 2;
function test(i) {
// local scope of the function test
i = 5;
var foo = 3;
bar = 4;
}
test(10);
为什么在函数中设置10=5的测试(10)不会出错?您不能执行5=7。5永远是5 i=7等于将变量i设置为7,这是您的第一个方法
var i = 5;
function exp(i) {
i = 7;
console.log(i);//of course it prints 7, i belong to exp scope
}
console.log(i)//it will print five
exp(i);
您并没有给i变量赋予新的值,只是给了您参数
得到
你试图返回n 5=7;5是多少?
在Javascript中,如果您不使用“严格模式”,那么您可以在不使用var关键字的情况下声明变量,但变量名不能以number开头
您的设置值不是5=7,而是将7设置为可变i。如果您执行“returni==7”,那么它将返回5==7,因此为false。但是如果是这种情况,我将把全局变量i更改为7,而事实并非如此。变量i仍然是5(在第一个示例中)可能与您在第一个示例中设置的i=7重复,实际上console.log(i)将输出7…您熟悉变量和赋值语句吗
i=i+1
是一条有效语句,它将i
递增1
i=7
将i
更改为7
,并忘记了前面的值。我想我现在明白了:)谢谢:)因此,函数调用的参数始终为该函数的参数提供一个值,该参数必须是一个值,而不是一个变量名。这就是为什么在函数中构造函数像function X(name){this.name=name}
这样运行,参数'name'引用值name
,而不是这个。name
。现在我想我终于明白了:)
// global scope
var foo = 1;
var bar = 2;
var i = 2;
function test(i) {
// local scope of the function test
i = 5;
var foo = 3;
bar = 4;
}
test(10);
var i = 5;
function exp(i) {
i = 7;
console.log(i);//of course it prints 7, i belong to exp scope
}
console.log(i)//it will print five
exp(i);
function exp() {
return 5 = 7; //or console.log(5 = 7);
}
function exp() {
return 5 + 7; //or console.log(5 + 7);//this will work
}
function exp(i) {
i = 5
return i = 7; //or console.log(5 + 7);//this will work
}