首页 > 试题广场 >

执行以下代码,输出结果为()

[单选题]
执行以下代码,输出结果为()
function test(a){
    a=a+10;
}
var a=10;
test(a);
console.log(a);

  • 10
  • 20
  • 抛出异常
  • undefined
function test(a){
a=a+10;
}
var a=10;
test(a);
console.log(a);
a是形参,属于局部变量,不影响全局变量a的值,因此输出的a是全局变量的值10
发表于 2019-08-15 15:27:06 回复(0)
1. 当传入参数的为基本类型(number, string, boolean)时,传入实际值
2. 当传入参数为引用类型时, 传入内存地址,对形参的修改,相当于对原值的修改
例子:
function test(a, b){
a=a+10;
b.name = 'xiaohong'
}
var a=10;
var b = {'name': 'xiaoming'}
console.log(b.name) // 'xiaoming'
test(a, b);
console.log(a); // 10
console.log(b.name) // 'xiaohong'


发表于 2019-11-12 15:31:18 回复(5)
以不带参数的形式的修改才是全局修改!
发表于 2019-09-25 08:37:07 回复(1)

通过值传递参数

函数中调用的参数是函数的隐式参数。
JavaScript 隐式参数通过值来传递:函数仅仅只是获取值。
如果函数修改参数的值,不会修改显式参数的初始值(在函数外定义)。
隐式参数的改变在函数外是不可见的。
所以这个地方不会修改a的值。

但是,如果这个地方传入的是对象,修改的是对象某个属性的值,那么就会修改a对象的值了。

通过对象传递参数

在JavaScript中,可以引用对象的值。
因此我们在函数内部修改对象的属性就会修改其初始的值。
修改对象属性可作用于函数外部(全局变量)。
修改对象属性在函数外是可见的。

发表于 2019-08-19 11:32:58 回复(1)
var a = 10;
    function test(b) {
      a = b + 10;
    }
    test(a);
    console.log(a);  //a的值为20
 var a = 10;
    function test(b) {
      var a = b + 10;
    }
    test(a);
    console.log(a); //a的值为10


编辑于 2020-09-09 10:45:38 回复(1)
没有return
发表于 2020-03-02 10:33:46 回复(1)

方法调用之后产出的a的值并不影响全局变量中的a的值,虽然函数内部写的是隐式全局变量,但作为形参的话就成了局部变量

发表于 2019-08-21 00:28:46 回复(0)
分清楚作用域,函数里面的 a 是形参,函数作用域,函数调用结束就会被销毁,全局打印 a  是全局 a,就是 10  
发表于 2021-08-02 15:31:05 回复(0)
Func():会改变全局变量,func(a):不会改变全局变量,变成了局部变量
发表于 2021-04-28 23:05:10 回复(2)
函数传入的a是一个形参,在全局当中声明和赋值的a传入函数之后,是函数里面的那个形参改变,console.log的a依旧是全局的a的值,依旧为10
发表于 2021-03-08 21:35:50 回复(0)
function test(a){ a=a+10; } var a=10; test(a); console.log(a); 函数的形参 a 相当于在函数内 var a = 实参传入a 这时,函数内的的a相当于局部变量,不会影响到全局变量
发表于 2020-11-04 16:08:45 回复(0)
function test(){
return a=a+10;
}
var a=10;
test();
console.log(a);
//这样输出得就是20了。之前的话是因为a只是作为形参传入函数,
//且只是改变了函数内部局部变量a的值,不影响全局变量a,

发表于 2020-09-08 21:14:35 回复(0)
如果加个return a 是不是就是20了
发表于 2019-11-26 10:22:30 回复(1)
a是形参,不影响全局变量a的值
发表于 2019-10-24 10:53:03 回复(0)
其实有一个比较容易混淆的两个概念
//代码1
function test(a){
a=a+10;
}
var a=10;
test(a);
console.log(a);
//代码2
function test(){
a=a+10;
}
var a=10;
test();
console.log(a);
小细节决定你的变量是全局变量还是局部变量

编辑于 2021-06-01 16:59:59 回复(0)
基本的数据类型 传参时进行的是值的拷贝 因此不会对实参产生影响
发表于 2023-05-07 00:23:36 回复(0)
a是形参
发表于 2022-12-30 02:27:49 回复(0)
function test(){ return a=a+10; } var a=10; test(); console.log(a); //这样输出得就是20了。之前的话是因为a只是作为形参传入函数, //且只是改变了函数内部局部变量a的值,不影响全局变量a,
发表于 2022-11-19 21:22:22 回复(0)
因为函数
function test(a){
    a=a+10;
}
这里的a是形参变量,就是在函数内部又声明了一个变量a,与全局变量a是不一样的
发表于 2022-09-27 22:32:18 回复(0)
简单点来讲就是 a=a+10;  这句话的变量a  是局部作用域里的变量,与全局中的a 不是一个东西。不管怎么改也不会影响到全局中的a 。所以打印结果还是10 
发表于 2022-05-20 15:07:36 回复(0)