如何解决在javascript中调用提升函数时的奇怪效果
我是 JavaScript 的新手。我在 JS 中学习了提升行为,并通过一个简单的程序示例自行测试。
我的程序生成一个包含随机数的数组,然后调用 unique()
删除数组中的所有重复元素:
const NUMBERS = [34,25,45,11,36,98,58,97,56]
const ARRAY_LENGTH = 4;
function getRandomNumberList () {
let res = []
for (i = 0; i < ARRAY_LENGTH; i++) {
res.push(NUMBERS[Math.floor(Math.random() * ARRAY_LENGTH)])
}
return res
}
// Generate array with random numbers
let randomArray = getRandomNumberList()
// When we compute this,First call doesn't Work
// the console.log return [ 34,34,34 ]
console.log(randomArray)
// First call with Hoisting
// Because of console log,return [ 34,25 ] instead of [ 34,45 ]
unique(randomArray)
// This function remove duplicates entries if exist.
function unique (arr) {
let uniqueArray = [...new Set(arr)]
return uniqueArray
};
// Second call without hoisting. This seems to work all the time
// return [ 34,45 ]
unique(randomArray)
然而,我遇到了一个奇怪的行为。
当我调用 console.log
above 第一个调用时,第一个调用不起作用。但是,如果我删除了 console.log(),它似乎可以工作。
谁能解释一下为什么会发生这种行为?
请注意我使用 Runjs 暂存器来运行我的程序。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。