前言:
一位前端界的大神讓我去思考的一個問題, 給了Big-man一段代碼,如下:
function Seriously(options) { // if called without 'new', make a new object and return that if(window === this || !(this instanceof Seriously) || this.id !== undefined) { return new Seriously(options); } }
return語句執行之后還會繼續執行嗎?這是大神上來讓我解決的問題,既然提到了return那我也就隨帶解決JS中另外的兩種結束循環的方法break, continue。
Break語句:
for(var i = 519; i < 550; i++) { if(i == 522) { break; } console.log(i); alert(i); document.write(i); }
Continue語句:
for(var i = 5; i >=0; i--) { if(i == 4 || i == 3 || i == 1) { continue; } console.log(i); alert(i); document.write(i); }
Return語句:
return語句就是用于指定函數返回的值。return語句只能出現在函數體內,出現在代碼中的其他任何地方造成語法錯誤!
for(var i = 1; i < 10; i++) { if(i == 8) { return; } console.log(i); alert(i); document.write(i); }
執行結果Uncaught SyntaxError: illegal return statement(...)
當執行return語句時, 即使函數主題中還有其他語句, 函數執行也會停止!
<script type="text/javascript"> if(username == "") { alert("please input your username: "); return false; } else if (qq == "") { alert("please input your qq number: "); return false; } </script>
上面的實例里,當username為空時,就不會再向下執行,在一些表單提交中,也可以通過return false來阻止默認的提交方式,改用Ajax的提交方式,例如:
<form id="form" onSubmit="return false"> ... </form>
this對應的全局變量:
window == this這個Boolean等式,在不同的情況下的展現都不一樣的。
<!DOCTYPE html> <html> <head> <title></title> </head> <body> <script type="text/javascript"> function a() { console.log(window === this) } a(); </script> </body> </html>
這個時候的window === this打印出來的是true,這也就意味著this絕對等于window。
<!DOCTYPE html> <html> <head> <title></title> </head> <body> <script type="text/javascript"> 'use strict' function a() { console.log(window === this) } a(); </script> </body> </html>
這個時候window === this返回回來的值卻是false, 而且打印出來的this是undefined的。
所以嚴格模式下面的代碼操作需要更加的規范和合理才可以的。
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com