函数内部计算的是局部变量的形参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 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)