1. function中的return false 与 return的区别?
前者返回的是bool值false, 后者返回的是undefined
return语句终止函数的执行,并返回一个指定的值给函数调用者。
语法
return [[expression]];
expression
表达式的值会被返回。如果忽略,则返回 undefined。
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/return //推荐实践
备注:
如果在函数外直接使用return, 会报语法错误
console.log('return before'); if(true){ return; } console.log('return after'); VM2724:3 Uncaught SyntaxError: Illegal return statement
截图:
2. 函数外暂定[即js任意地方脚本]? JavaScript是一门单线程但是可处理异步任务的脚本语言,
是没有提供sleep等类似的方法的, 当有需求需要暂停js脚本时,
可以使用以下的方法.
单线程分析
JavaScript - 多线程/单线程, 同步/异步,阻塞/非阻塞, 回调函数_william_n的博客-CSDN博客_js线程同步
一, alert, comfirm弹窗暂停
js的alert, confirm弹窗类方法, 是可以暂停js脚本执行的. //也是因为这个原因, 调试前端代码并不推荐使用alert();
例如:
console.log(1);
alert(1);
console.log(2);
截图:
这样弹窗,是需要点击确认才会执行下面的语句的
就算是定时器也一样暂停.
var i=0;
setInterval(function(){
console.log(i);
i++;
if(i==5){
alert(i);
}
},500)
截图:
二, while() 方法暂停
while方法可以暂停, 但是会影响浏览器性能, 并且不好控制.
var i=0; console.log(new Date()); while(i<5000000000){ i++; } console.log(new Date());
截图:
只要控制下while的判断条件,就可以实现暂停了.
三, ajax同步请求方法
此方法需要服务器协作才能实现, 这里就暂时不做测试, 而且不建议使用.
大概步骤就是:
ajax同步 [设置一个参数即可] 请求服务器,
带上一个参数time,
服务器接收之后,
sleep(time), //如: php
到时间再输出, 回到ajax回调函数, 在这个时间 内,ajax是停止状态的.
总结:
Js是不能暂停[与终止不同]脚本的, 上面的方法, 只是抢占当前浏览器线程, 相当于该线程的某个语句一直还停留在当前浏览器线程.
如:while, 当前还未执行完while循环该方法,所以不能退出该线程, 不让切换执行, 所以实现了'暂停'.
3. 终止脚本 throw 语句
throw语句的作用是手动中断程序执行,抛出一个错误。
if (x <= 0) { throw new Error('x 必须为正数'); } // Uncaught ReferenceError: x is not defined
上面代码中,如果变量x小于等于0,就手动抛出一个错误,告诉用户x的值不正确,整个程序就会在这里中断执行。可以看到,throw抛出的错误就是它的参数,这里是一个Error实例。
throw也可以抛出自定义错误。
对于 JavaScript 引擎来说,遇到throw语句,程序就中止了。
引擎会接收到throw抛出的信息,可能是一个错误实例,也可能是其他类型的值。
后续补充
...