-
Notifications
You must be signed in to change notification settings - Fork 645
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
字节:修改以下 print 函数,使之输出 0 到 99,或者 99 到 0 #101
Comments
function print(n){
setTimeout((() => {
console.log(n);
})(), Math.floor(Math.random() * 1000));
}
for(var i = 0; i < 100; i++){
print(i);
} |
function print(n) { |
function print(n){ setTimeout(console.log(n), Math.floor(Math.random() * 1000)); } for(var i = 0; i < 100; i++){ print(i); } |
function print(n) { |
// 取个巧 直接注释掉setTimeout,让他不再无序输出 。这里真正在执行print()时传进去的就是当前的i值
function print(n){
// setTimeout((() => {
console.log(n);
console.log(99-n)
//})(), Math.floor(Math.random() * 1000));
}
for(var i = 0; i < 100; i++){
print(i);
} |
|
//async await
function print(n){
setTimeout(async () => {
await console.log(n);
}), Math.floor(Math.random() * 1000);
}
for(var i = 0; i < 100; i++){
print(i);
} |
|
function print(n) {
setTimeout(() => {
console.log(n)
}, 0*Math.floor(Math.random() * 1000))
}
for (var i = 0; i < 100; i++) {
print(i)
} |
function print (n) {
setTimeout(async () => {
await console.log(n)
}, (1)**Math.floor(Math.random() * 1000) * n);
}
for(var i = 0; i < 100; i++) {
print(i)
} |
function print(n) {
setTimeout(
(() => {
console.log(n);
return function () {};
})(),
Math.floor(Math.random() * 1000)
);
}
for (var i = 0; i < 100; i++) {
print(i);
} |
总结了一下,解法主要有三种: 方法一:利用 function print(n){
setTimeout(() => {
console.log(n);
}, 1, Math.floor(Math.random() * 1000));
}
for(var i = 0; i < 100; i++){
print(i);
} 方法二:修改 function print(n){
setTimeout((() => {
console.log(n);
return () => {}
}).call(n), Math.floor(Math.random() * 1000));
}
for(var i = 0; i < 100; i++){
print(i);
} 方法三:利用异步函数 function print(n){
setTimeout(async () => {
await console.log(n);
}), Math.floor(Math.random() * 1000);
}
for(var i = 0; i < 100; i++){
print(i);
} |
方法三错的,1000后面少了个括号 |
这。。写啥 async await哦。。 function print(n){
setTimeout(() => {
console.log(n);
}), Math.floor(Math.random() * 1000); // 这不是一样?实际是把 Math.floor(Math.random() * 1000); 用 ), 分离了
}
for(var i = 0; i < 100; i++){
print(i);
} |
//多加一个参数不就可以了吗
function print(n){
setTimeout(() => {
console.log(n);
},1000, Math.floor(Math.random() * 1000));
}
for(var i = 0; i < 100; i++){
print(i);
} ``` |
方法一为什么多加一个参数就可以了 |
/**
* setTimeout传参数
*/
setTimeout((a,b,c)=>{
console.log(a,b,c)
},500,'My','name','is xll')
//解法一
function print1(n) {
setTimeout( () => {
console.log(n)
}, 1,Math.floor(Math.random() * 1000))
}
for (var i = 0; i < 100; i++) {
print1(i)
}
//解法二 异步函数
function print2(n) {
setTimeout(async ()=>{
await console.log(n)
}),Math.floor(Math.random()*1000)
}
for(var i=0;i<100;i++) {
print2(i);
} |
异步函数 那个就是骗人, 不用 async 输出也是对的, 想到与 setTimeout(fn, 0), 宏任务也是按照顺序输出 其实方法就两种
function print(n){
setTimeout(() => {
console.log(n);
}), Math.floor(Math.random() * 1000);
} |
借用以上代码 方法一 让执行的duration全都变成1, 与Math.floor(Math.random() * 1000)无关了 |
要求:
1、只能修改
setTimeout
到Math.floor(Math.random() * 1000
的代码2、不能修改
Math.floor(Math.random() * 1000
3、不能使用全局变量
The text was updated successfully, but these errors were encountered: