JavaScript知識點彙總
js中‘0’到底是true還是false
if ('0') alert("'0' is true");
if ('0' == false) alert("'0' is false");
結果是,兩次都 alert
了!那麼 ‘0’ 到底是 true
還是 false
呢?
答案是:在js做比較的時候,有這樣的三條規則:
- 如果比較的兩者中有
boolean
,會把boolean
先轉換為對應的number
,即 0 和 1(false是0,1是true) - 如果比較的雙方中有一方為
number
一方為string
,會把string
轉換為數字
把string
直接轉換為boolean
的時候,空字串‘’轉換為false
,除此外的一切字串轉換為true
如果比較的兩者中有(boolean
布林型別 有道詞典bool
),先把bool
轉換成對應的number
(false
為0,true
為1),即是0
和1
雙方中一個是number
一個是string
,會把string
轉成對應的數字再做比較
把string
直接轉成bool
的之後,空字串的’'轉成false
,除此外其他的字串轉成true
JavaScript高階技巧
惰性載入函式
因為瀏覽器之間行為的差異,多數JavaScript程式碼包含了大量的if語句,將執行引導到正確的程式碼中。例如Ajax 建立XHR物件的過程。
如果if語句不必每次執行,那麼程式碼可以執行地更快些。解決方案就是惰性載入的技巧。
惰性載入表示函式執行的分支僅會執行一次。有兩種實現的方式:
(1)在函式被呼叫時再處理函式,在第一次呼叫的過程中,該函式會被覆蓋為另外一個按合適方式執行的函式,
這樣任何對原函式的呼叫都不用再經過執行的分支了。(重寫函式)
(2)在宣告函式時就指定適當的函式。這樣,第一次呼叫函式時就不會損失效能了,而在程式碼首次載入時會損失一點效能。(自執行的匿名函式返回正確函式)
函式級聯化
JavaScript級聯函式,級聯函式也叫鏈式函式,方法鏈一般適合對一個物件進行連續操作(集中在一句程式碼)。
一定程度上可以減少程式碼量,缺點是它佔用了函式的返回值。
JQuery裡一個很大的亮點就是它支援鏈式寫法,呼叫起來非常方便:
其實實現起來非常簡單 —— 確保每個呼叫的方法尾部均返回自身即可。
function Person(){
this.face="";
this.mouth="";
this.eyes="";
}
Person.prototype={
setFace:function(){
this.face="紅撲撲";
return this;
},
setMouth:function(){
this.mouth="大嘴";
return this;
},
setEyes:function(){
this.eyes="小眼";
return this;
}
};
var person=new Person();
person.setFace().setMouth().setEyes();
console.log(person);
函式柯里化
函式柯里化用於建立已經設定好了一個或多個引數的函式,基本方法:使用一個閉包返回一個函式,當函式被呼叫時,返回的函式還要設定一些傳入的引數。
柯里化函式通常由以下步驟動態建立:呼叫另一個函式併為它傳入要柯里化的函式和必要的引數。
function curry(fn){
var args=Array.prototype.slice.call(arguments,1);//將arguments轉為真正的陣列,並傳入引數1表示返回的陣列包含從第二個引數開始的所有引數
return function(){
var innerArgs=Array.prototype.slice.call(arguments);
var finalArgs=args.concat(innerArgs);
return fn.apply(null,finnalArgs);//使用apply傳遞引數給函式
}
}
js中return;、return true、return false;區別
一、返回控制與函式結果,
語法為:return 表示式;
語句結束函式執行,返回撥用函式,而且把表示式的值作為函式的結果
二、返回控制,
無函式結果,語法為:return;
在大多數情況下,為事件處理函式返回false,可以防止預設的事件行為.例如,預設情況下點選一個元素,頁面會跳轉到該元素href屬性指定的頁.
Return False 就相當於終止符,Return True 就相當於執行符。
在js中return false的作用一般是用來取消預設動作的。比如你單擊一個連結除了觸發你的
onclick事件(如果你指定的話)以外還要觸發一個預設事件就是執行頁面的跳轉。所以如果
你想取消物件的預設動作就可以return false。
首先在js中,我們常用return false來阻止提交表單或者繼續執行下面的程式碼,通俗的來說就是阻止執行預設的行為。
function a(){
if(True)
return false;
}
,這是沒有任何問題的。
如果我改成這種
function Test(){
a();
b();
c();
}
即使a函式返回return false
阻止提交了,但是不影響 b()以及 c()函式的執行。在Test()函式裡呼叫a()函式,那面裡面
return false
對於Test()函式來說,只是相當於返回值。而不能阻止Test()函式執行。
總之:return false 只在當前函式有效,不會影響其他外部函式的執行。
三:總結
retrun true; 返回正確的處理結果。
return false;分會錯誤的處理結果,終止處理。
return;把控制權返回給頁面。
Js實現web頁面一段時間沒操作,退出或關閉頁面
1. 思路
js
設定一個倒數計時,當監聽到keydown mousemove mousedown
等事件時,重置倒數計時。若倒數計時為0
時,觸發相應事件。
2. 實現
注:需要引入JQuery
<script src="http://cdn.bootcss.com/jquery/1.11.2/jquery.min.js"></script>
核心程式碼段
/* if 5 minutes no operation then logout --liaotuo@2017.8.20 */
var maxTime = 300; // seconds
var time = maxTime;
$('body').on('keydown mousemove mousedown', function(e) {
time = maxTime; // reset
});
var intervalId = setInterval(function() {
time--;
if (time <= 0) {
ShowInvalidLoginMessage();
clearInterval(intervalId);
}
}, 1000)
function ShowInvalidLoginMessage() {
alert("您已經長時間沒操作了,即將退出系統");
//TODO 做需要做的操作
//exp:關閉頁面
window.close();
}
相關文章
- 玩轉javaScript---知識點彙總(3)JavaScript
- 玩轉javascript---知識點彙總(2)JavaScript
- 玩轉javascript---知識點彙總(1)JavaScript
- js知識點彙總JS
- SVM知識點彙總
- java知識點彙總Java
- 前端開發 JavaScript 乾貨知識點彙總前端JavaScript
- 前端小知識點彙總前端
- MySQL MVCC知識點彙總MySqlMVC
- JavaScript知識點總結JavaScript
- C++知識點大彙總C++
- java異常知識點彙總Java
- MySQL基礎知識點彙總MySql
- Java常見知識點彙總(⑳)——鎖Java
- Java常見知識點彙總(②)——StaticJava
- Python入門知識點彙總Python
- C/C++重要知識點彙總C++
- MySQL知識彙總MySql
- Docker 知識彙總Docker
- 前端知識彙總前端
- Java常見知識點彙總(⑦)——集合框架Java框架
- Java常見知識點彙總(⑨)——異常Java
- Java常見知識點彙總(⑪)——泛型Java泛型
- Pandas知識點彙總(2)——布林索引索引
- PHP入門易忘知識點彙總PHP
- asp.net 常用知識點彙總整理ASP.NET
- 《JavaScript設計模式與開發實踐》最全知識點彙總大全JavaScript設計模式
- 前端知識點總結——JavaScript基礎前端JavaScript
- Web開發知識點彙總(每天積累一點點)Web
- Java常見知識點彙總(⑮)——Jvm架構JavaJVM架構
- Java常見知識點彙總(⑧)——分派機制Java
- Java常見知識點彙總(⑬)——執行緒Java執行緒
- JAVA高階面試必過知識點彙總Java面試
- Oracle RAC修改網路配置知識點彙總Oracle
- Android移動應用知識點總彙①Android
- Android應用開發—知識點彙總Android
- MySQL-知識彙總MySql
- android 知識彙總Android