首页 > 试题广场 >

请问以下JS代码输出的结果是什么? function f(x

[单选题]
请问以下JS代码输出的结果是什么?
function f(x) {
  console.log(x);
  var x = 200;
  console.log(x);
  }
f(a = 100);
console.log(a);


  • undefined、200、undefined
  • 100、200、undefined
  • 100、200、100
  • undefined、200、100
没几年脑溢血写不出这种代码
发表于 2021-12-10 20:14:29 回复(10)

琢磨了一下,程序执行顺序应该是这样的:

function f(x) {
  console.log(x);
  var x = 200;
  console.log(x);
  }
f(a = 100);
console.log(a);

// 以下是引擎解析后的顺序
function f(x) {
    var x;
    x = 100; // 隐式的赋值
    console.log(x); 
    x = 200;
    console.log(x);
}
var a;
a = 100;
f(a);
console.log(a)
发表于 2022-02-15 16:19:42 回复(1)
被a=100坑了一把的举手
发表于 2022-02-12 13:09:49 回复(0)
相当于创建全局变量a再传入函数调用
发表于 2022-01-07 11:08:34 回复(0)
a=100作为形参传入,此时全局定义了var a = 100;var x变量提升至函数内部最前,形参x和变量x同名,变量x声明被忽略。所以第一个console为100;x=200赋值,第二个console为200;第三个console为100。
发表于 2022-02-23 21:34:04 回复(0)
你要知道形参赋值大于变量赋值
function f(x) {   //形参接收100   x=100
var  x   //用var声明的变量存在提升,会提升到当前作用域的最顶端。
  console.log(x); //此处的x是形参   这里x=100;
  x= 200; 形参重新赋值为200
  console.log(x); 这里x是形参, x为200
  }
f(a = 100);//实参赋值   这里的实参是全局变量 全局变量不一定会用var声明。
console.log(a);  //这里打印的是全局变量a  即实参a 

补充点知识点
用var声明的全局变量不可以被delete删除
没有用var声明的全局变量可以被delete删除
发表于 2022-02-23 23:05:27 回复(1)
第一个log(x)为什么不是undefined,变量x不应该变量提升为var x,重定义形参x吗
发表于 2022-01-26 10:50:55 回复(2)
前面这个x为什么等于100
编辑于 2021-12-09 20:47:23 回复(3)
相当于
function f(a) {
  var x = a
  console.log(x);
  x = 200;
  console.log(x);
}
var a = 100;
f(a)
console.log(a);


发表于 2022-03-05 20:38:32 回复(0)

意思就是在第6行调用f(...)里的a = 100会上升为定义全局变量。

发表于 2022-02-10 19:08:17 回复(0)
if当中的变量也挂到全局中
编辑于 2024-02-27 17:44:17 回复(0)
个人理解:
x 虽然被提升了,但是并没有赋值,存在同名参数时先用了参数的值。
function a(x) {
    var x = 1000;
    console.log(x)
    x = 200
    console.log(x)
}

a(1) 
// 1000
// 200

// =================================
function a(x) {
    var x;
    console.log(x)
    x = 200
    console.log(x)
}

a(114514)
// 114514
// 200


发表于 2022-08-24 14:37:50 回复(0)
错在不知道a=100如何处理。a先变为全局变量,且值为100,然后再当实参
发表于 2022-03-30 22:48:39 回复(1)
这是我学的js吗,无语了
发表于 2022-03-14 18:44:28 回复(0)
😄
发表于 2022-02-24 10:38:03 回复(0)
f里面传的参 a = 100中的a是定义的全局变量么..,啊啊啊没看懂
发表于 2021-12-15 09:32:48 回复(1)