首页 > 试题广场 >

上面这段代码中alert 两次输出结果为

[单选题]
var foo=”Hello”;
(function(){
    var bar=”World”;
    alert(foo+bar);
})();
alert(foo+bar);
上面这段代码中alert 两次输出结果为
  • Hello World报错
  • Hello World Hello World
  • Hello World Hello
(function(){
    var bar=”World”;
    alert(foo+bar);
})();
//此函数是一个匿名自执行函数,会先调用并执行一次,即alert (foo+bar)的字符串拼接;
// var bar=”World”是函数内部声明的局部变量,外部无法调用,所以外部的alert(foo+bar)会报错。
发表于 2017-09-22 14:11:01 回复(4)
bar is not defined,由于bar没有被全局定义,仅在局部被定义的变量属于局部变量,若去掉bar前面的var声明变成全局变量就可以正常alert
编辑于 2018-07-23 17:22:10 回复(1)
bar为局部变量,第一次函数调用输出hello world 第二次报错。
发表于 2017-08-21 13:05:01 回复(1)
函数内部var声明的变量也会发生变量提升,但只会提升至本作用域最上,不会跨作用域,因此函数执行完毕后,外层是无法访问函数作用域内的变量。
发表于 2021-11-19 21:00:36 回复(1)
(function(){})()这是一个匿名自执行函数,在函数内部声明的变量bar为局部变量,函数外部无法调用,所以第二次打印报错;第一次打印时。函数通过作用域链可以访问到外部的全局变量foo;因此第一次打印为hello world
发表于 2018-06-20 07:02:00 回复(0)
外层拿不到函数作用域里面的定义
发表于 2019-02-18 08:11:56 回复(0)
在全局作用域中直接使用未声明的变量bar会报错
发表于 2018-01-03 22:59:18 回复(0)
foo为全局变量,而bar为局部产量
发表于 2017-08-12 08:44:08 回复(1)

这是什么语言的代码

发表于 2019-10-07 15:53:50 回复(2)
第二个的函数调用不了局部函数
发表于 2018-05-10 17:35:09 回复(0)
变量未定义会报错not defined,而属性未定义会返回undefined。一般情况下,在全局作用域中访问不到局部作用域中定义的局部变量,因此第6行报错not defined。
发表于 2021-07-09 08:46:52 回复(0)
这个中文双引号就应该直接报错了🤐🤐
发表于 2021-04-15 15:05:02 回复(0)
双引号是中文的(虽然不重要)!🤐
发表于 2021-02-13 22:10:40 回复(0)
Hello是大写,输出的是小写啊
发表于 2019-03-05 22:49:21 回复(1)
里层的立即执行函数,执行完毕后,上下文环境会被立即销毁,再也找不到变量bar了.
var foo="Hello";
(function(){
    window.bar="World";
    alert(foo+bar);
})();
alert(foo+bar);
这样可以保存bar

发表于 2022-09-08 21:46:17 回复(0)
未定义是会抛出错误的,可为什么我记得是不报错来着,下次记住了
发表于 2021-04-10 15:00:29 回复(0)
这是一个立即执行函数,执行一次,变量的值就被清除了。所以外部获取不到。如果想要获取,需要再调用,用闭包实现。
发表于 2021-03-18 06:48:56 回复(1)
外部没有bar,没有声明也没定义,所以报错
发表于 2020-11-18 23:29:51 回复(0)
不是先执行外面的alert,在执行立即执行函数吗?@__@
发表于 2020-07-30 15:51:45 回复(0)
<p>立即执行函数,创建了局部变量,在输出完后,就直接销毁了 所以不再存在那个变量。</p>
发表于 2020-05-09 02:42:01 回复(0)