首页 > 试题广场 >

执行以下程序,输出结果为() function fn(){

[单选题]

执行以下程序,输出结果为()


function fn(){ var a = b = 1; }
fn();
console.log(b);...①
console.log(a);...②


  • ①②式输出结果都为1

  • ①②式都会抛出异常

  • ①式抛出异常,②式输出结果为1

  • ①式输出结果为1,②式抛出异常

语句 var a = b =1; 是语句 b = 1; 和 var a = b;的简写, b 成为一个全局变量(没有var前缀)

加不加var关系声明的变量是全局变量还是局部变量

function fn(){
   var a= b = 1;
 //等于var a = b ,b = 1
 //不加var b就是全局变量了(window.b=1),可以直接访问
 //var a是局部变量,在fn里面,外面访问不到
} 
fn();   
console.log(b);//windows全局作用域下找到window.b=1
console.log(a);//a在fn里面的作用域,外面访问不了,报错
编辑于 2022-05-11 11:23:07 回复(9)
var a=b=1代表 b=1 var a=b b没有带var是全局对象window的值谁都可以用,a是fn函数内部声明定义的变量,所以在全局对象window中不能用,报错!
发表于 2022-06-03 11:10:42 回复(0)
var a; b = 1; b相当于全局变量 a没有赋值抛出错误
发表于 2022-05-30 01:25:02 回复(0)
为什么a会抛异常而不是undefined
发表于 2022-10-06 19:22:22 回复(1)
看反了。。。
发表于 2022-09-22 20:21:08 回复(0)
b没有用var定义,变为全局变量了
发表于 2023-08-09 13:10:05 回复(0)
var a=b=1 等同于 var a=b;b=1  b没有变量声明会变量提升
发表于 2023-06-13 18:57:10 回复(0)
var是函数域,let是块域
发表于 2023-02-06 15:56:43 回复(0)
发表于 2022-12-12 00:30:32 回复(0)
var a = b = 1;的执行结果等效于 b = 1;var a = b。
因此,a是局部变量报错。b是全局变量,正常输出
发表于 2022-10-15 16:34:44 回复(0)
b是全局变量所以函数外部可以使用
发表于 2022-10-06 09:57:02 回复(0)
局部变量加上var为局部变量,不加为全局变量
发表于 2022-08-21 13:31:24 回复(0)
function fn(){
  //fn调用时,这里的b会成为隐式全局变量,
 //但是在严格模式下会报错,因为在严格模式下,任何变量都要通过关键声明才能创建!
   var a = b = 1;
 }
发表于 2022-03-27 10:46:42 回复(0)