微信小程序群发功能代码实现详细分析
664
2022-11-02
一道js面试题看变量的作用域
【问题】分别求下面程序的输出结果:
1. --输出:20 202. --输出:NaN 103. --输出:20 20 30 404. --输出:NaN 10 NaN NaN
【分析】第1题和第3题比较容易理解。 第2题和第4题呢,就需要分析分析了。
以上测试主要考察的是变量作用域知识。 在函数里,局部变量优先级比全局变量优先级高,这本没什么,但若局部变量与全局变量重名,那就有的说了。sayHi里边,var a 就相当于 a 跟外边没联系了。重新定义a = a+10 ,那等号右边的a还没给个确切的值(此时输出的a是undefined)呢, 所以,执行var a=a+10后,a的值为NaN (注意:因为是参与了加法运算,所以是NaN,而不是undefined)。
且看如下代码:
--输出: undefined world
原因:局部变量作用于整个作用域. 原因解释:正因为局部变量作用于整个作用域,所以函数shuchu中的第一行document.write(str+'
');中的str是用的局部变量,然而此时尚未赋值,所以会出现undefined.
【如果C#】以上是在js脚本中的情况。 如下c#代码在编译时会报错:使用了未赋值的局部变量"a"
public classScopeint a = 10; void SayHi() { int a = a + 10; Console.WriteLine(a); }}
public classScopeint a = 10; void SayHi() { a = 12; int a = 11; }}
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。