函数内部计算的是局部变量的形参i,不影响全局的变量i

以下哪些代码执行后i的值为10:

A
let i =1 + {
valueOf() { return 9; }
};

B
let i = 0;
new Array(10).forEach(() => {
i++;
});

C
let i = parseInt('0xA');

D
let i = 5;
function a(i) {
i *= 2;
}
a(i);

正确答案:AC

B选项输出值为0是因为forEach方法在数组元素为空时会跳过执行回调函数,相当于此选项回调函数并未执行,所以还是输出0
forEach会忽略掉 [empty,....]

c选项,是十六进制解析 parseInt("ff",16) parseInt("0xff") 效果一样

D阴就阴在形参也是i,和有没有返回值没有关系,函数内部计算的是局部变量的形参i,不影响全局的变量i

A:
如果在需要使用原始值的上下文中使用了对象,就会自动调用valueOf方法.这里重写了默认的valueOf 方法。

所以相当于 let i = 1+9

B:

forEach方法按升序为数组中含有效值的每一项执行一次 callback函数,那些未初始化的项将被跳过。

new Array(10)创建的数组默认值都是undefined,所以回调函数都会被跳过。

C:

**在没有指定基数的情况下,如果字符串以"0x"或者"0X"开头, 则基数是16 (16进制)。 **

相当于let i = parseInt('0xA',16)

D:

i是形参,,属于局部变量,不影响全局变量i的值


__EOF__

本文作者龙陌
本文链接https://www.cnblogs.com/longmo666/p/17824826.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   龙陌  阅读(14)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示