摘要:變量轉(zhuǎn)換類型類型類型類型類型但是轉(zhuǎn)換日期和正則表達(dá)式必須使用構(gòu)造函數(shù),創(chuàng)建正則表達(dá)式的時(shí)候要使用這樣的簡(jiǎn)化形式。
變量轉(zhuǎn)換
var myVar = "3.14159", str = ""+ myVar,// string類型 int = ~~myVar, // number類型 float = 1*myVar, // number類型 bool = !!myVar, // boolean類型 array = [myVar]; // array類型
但是轉(zhuǎn)換日期(new Date(myVar))和正則表達(dá)式(new RegExp(myVar))必須使用構(gòu)造函數(shù),創(chuàng)建正則表達(dá)式的時(shí)候要使用/pattern/flags這樣的簡(jiǎn)化形式。
取整同時(shí)轉(zhuǎn)換成數(shù)值型//字符型變量參與運(yùn)算時(shí),JS會(huì)自動(dòng)將其轉(zhuǎn)換為數(shù)值型(如果無法轉(zhuǎn)化,變?yōu)镹aN) "10.567890" | 0 //10 //JS里面的所有數(shù)值型都是雙精度浮點(diǎn)數(shù), //因此,JS在進(jìn)行位運(yùn)算時(shí),會(huì)首先將這些數(shù)字運(yùn)算數(shù)轉(zhuǎn)換為整數(shù),然后再執(zhí)行運(yùn)算 //| 是二進(jìn)制或, x|0 永遠(yuǎn)等于x; //^為異或,同0異1,所以 x^0 還是永遠(yuǎn)等于x; //~是按位取反,搞了兩次以后值當(dāng)然是一樣的 "10.567890" ^ 0 //結(jié)果: 10 - 2.23456789 | 0 //-2 ~~2.23456789 //2 ~~-2.23456789 //-2 ~-2.23456789 //1 ~2.23456789 //-3日期轉(zhuǎn)數(shù)值
//JS本身時(shí)間的內(nèi)部表示形式就是Unix時(shí)間戳,以毫秒為單位記錄著當(dāng)前距離1970年1月1日0點(diǎn)的時(shí)間單位 var d = +new Date(); //1488947616099類數(shù)組對(duì)象轉(zhuǎn)數(shù)組
var arr =[].slice.call(arguments)
如下實(shí)例:
function test() { var res = ["a", "b"]; //方法1 res = res.concat([].slice.call(arguments,0)); //0可省略,表示從開始位置截取 //方法2 Array.prototype.push.apply(res, arguments); } test("c","d"); //["a", "b", "c", "d"]進(jìn)制之間的轉(zhuǎn)換
(int).toString(16); // converts int to hex, eg 12 => "C" (int).toString(8); // converts int to octal, eg. 12 => "14" parseInt(string,16) // converts hex to int, eg. "FF" => 255 parseInt(string,8) // converts octal to int, eg. "20" => 16判斷是否為IE
//edit http://www.lai18.com // 貌似是最短的,利用IE不支持標(biāo)準(zhǔn)的ECMAscript中數(shù)組末逗號(hào)忽略的機(jī)制 var ie = !-[1,]; // 利用了IE的條件注釋 var ie = /*@cc_on!@*/false; // 還是條件注釋 var ie//@cc_on=1; // IE不支持垂直制表符 var ie = "v"=="v"; // 原理同上 var ie = !+"v1";盡量利用原生方法
要找一組數(shù)字中的最大數(shù),我們可能會(huì)寫一個(gè)循環(huán),例如:
var numbers = [3,342,23,22,124]; var max = 0; for(var i=0;imax){ max = numbers[i]; } } alert(max);
其實(shí)利用原生的方法,可以更簡(jiǎn)單實(shí)現(xiàn)
var numbers = [3,342,23,22,124]; numbers.sort(function(a,b){return b - a}); alert(numbers[0]);
當(dāng)然最簡(jiǎn)潔的方法便是:
Math.max(12,123,3,2,433,4); // returns 433
當(dāng)前也可以這樣:
Math.max.apply(Math, [12, 123, 3, 2, 433, 4]) //取最大值 Math.min.apply(Math, [12, 123, 3, 2, 433, 4]) //取最小值事件委派
舉個(gè)簡(jiǎn)單的例子:html代碼如下:
Great Web resources
js代碼如下:
// Classic event handling example (function(){ var resources = document.getElementById("resources"); var links = resources.getElementsByTagName("a"); var all = links.length; for(var i=0;i利用事件委派可以寫出更加優(yōu)雅的:
(function(){ var resources = document.getElementById("resources"); resources.addEventListener("click",handler,false); function handler(e){ var x = e.target; // get the link tha if(x.nodeName.toLowerCase() === "a"){ alert("Event delegation:" + x); e.preventDefault(); } }; })();你知道你的瀏覽器支持哪一個(gè)版本的Javascript嗎?var JS_ver = []; (Number.prototype.toFixed)?JS_ver.push("1.5"):false; ([].indexOf && [].forEach)?JS_ver.push("1.6"):false; ((function(){try {[a,b] = [0,1];return true;}catch(ex) {return false;}})())?JS_ver.push("1.7"):false; ([].reduce && [].reduceRight && JSON)?JS_ver.push("1.8"):false; ("".trimLeft)?JS_ver.push("1.8.1"):false; JS_ver.supports = function() { if (arguments[0]) return (!!~this.join().indexOf(arguments[0] +",") +","); else return (this[this.length-1]); } alert("Latest Javascript version supported: "+ JS_ver.supports()); alert("Support for version 1.7 : "+ JS_ver.supports("1.7"));判斷屬性是否存在// BAD: This will cause an error in code when foo is undefined if (foo) { doSomething(); } // GOOD: This doesn"t cause any errors. However, even when // foo is set to NULL or false, the condition validates as true if (typeof foo != "undefined") { doSomething(); } // BETTER: This doesn"t cause any errors and in addition // values NULL or false won"t validate as true if (window.foo) { doSomething(); }有的情況下,我們有更深的結(jié)構(gòu)和需要更合適的檢查的時(shí)候:
// UGLY: we have to proof existence of every // object before we can be sure property actually exists if (window.oFoo && oFoo.oBar && oFoo.oBar.baz) { doSomething(); }其實(shí)最好的檢測(cè)一個(gè)屬性是否存在的方法為:
if("opera" in window){ console.log("OPERA"); }else{ console.log("NOT OPERA"); }檢測(cè)對(duì)象是否為數(shù)組var obj=[]; Object.prototype.toString.call(obj)=="[object Array]";給函數(shù)傳遞對(duì)象function doSomething() { // Leaves the function if nothing is passed if (!arguments[0]) { return false; } var oArgs = arguments[0] arg0 = oArgs.arg0 || "", arg1 = oArgs.arg1 || "", arg2 = oArgs.arg2 || 0, arg3 = oArgs.arg3 || [], arg4 = oArgs.arg4 || false; } doSomething({ arg1 : "foo", arg2 : 5, arg4 : false });循環(huán)中使用標(biāo)簽有時(shí)候循環(huán)當(dāng)中嵌套循環(huán),你可能想要退出某一層循環(huán),之前總是用一個(gè)標(biāo)志變量來判斷,現(xiàn)在才知道有更好的方法:
outerloop: for (var iI=0;iI<5;iI++) { if (somethingIsTrue()) { // Breaks the outer loop iteration break outerloop; } innerloop: for (var iA=0;iA<5;iA++) { if (somethingElseIsTrue()) { // Breaks the inner loop iteration break innerloop; } } }轉(zhuǎn)載地址:https://my.oschina.net/os2015...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/86795.html
摘要:因?yàn)橛脩舨挥迷诘谝淮芜M(jìn)入應(yīng)用時(shí)下載所有代碼,用戶能更快的看到頁(yè)面并與之交互。譯高階函數(shù)利用和來編寫更易維護(hù)的代碼高階函數(shù)可以幫助你增強(qiáng)你的,讓你的代碼更具有聲明性。知道什么時(shí)候和怎樣使用高階函數(shù)是至關(guān)重要的。 Vue 折騰記 - (10) 給axios做個(gè)挺靠譜的封裝(報(bào)錯(cuò),鑒權(quán),跳轉(zhuǎn),攔截,提示) 稍微改改都能直接拿來用~~~喲吼吼,喲吼吼..... 如何無痛降低 if else 面...
摘要:忍者級(jí)別的函數(shù)操作對(duì)于什么是匿名函數(shù),這里就不做過多介紹了。我們需要知道的是,對(duì)于而言,匿名函數(shù)是一個(gè)很重要且具有邏輯性的特性。通常,匿名函數(shù)的使用情況是創(chuàng)建一個(gè)供以后使用的函數(shù)。 JS 中的遞歸 遞歸, 遞歸基礎(chǔ), 斐波那契數(shù)列, 使用遞歸方式深拷貝, 自定義事件添加 這一次,徹底弄懂 JavaScript 執(zhí)行機(jī)制 本文的目的就是要保證你徹底弄懂javascript的執(zhí)行機(jī)制,如果...
摘要:技巧使你的更加專業(yè)這是上關(guān)于技巧的一篇譯文,另外你也可以在本項(xiàng)目看到原文。列舉了一些很實(shí)用的技巧,比如給空內(nèi)容的標(biāo)簽添加內(nèi)容,逗號(hào)分隔列表等等。排序算法看源碼,把它背下來吧排序算法的封裝。主要幫助初學(xué)者更好的掌握排序算法的實(shí)現(xiàn)。 成為專業(yè)程序員路上用到的各種優(yōu)秀資料、神器及框架 成為一名專業(yè)程序員的道路上,需要堅(jiān)持練習(xí)、學(xué)習(xí)與積累,技術(shù)方面既要有一定的廣度,更要有自己的深度。 Java...
摘要:技巧使你的更加專業(yè)這是上關(guān)于技巧的一篇譯文,另外你也可以在本項(xiàng)目看到原文。列舉了一些很實(shí)用的技巧,比如給空內(nèi)容的標(biāo)簽添加內(nèi)容,逗號(hào)分隔列表等等。排序算法看源碼,把它背下來吧排序算法的封裝。主要幫助初學(xué)者更好的掌握排序算法的實(shí)現(xiàn)。 成為專業(yè)程序員路上用到的各種優(yōu)秀資料、神器及框架 成為一名專業(yè)程序員的道路上,需要堅(jiān)持練習(xí)、學(xué)習(xí)與積累,技術(shù)方面既要有一定的廣度,更要有自己的深度。 Java...
摘要:前言月份開始出沒社區(qū),現(xiàn)在差不多月了,按照工作的說法,就是差不多過了三個(gè)月的試用期,準(zhǔn)備轉(zhuǎn)正了一般來說,差不多到了轉(zhuǎn)正的時(shí)候,會(huì)進(jìn)行總結(jié)或者分享會(huì)議那么今天我就把看過的一些學(xué)習(xí)資源主要是博客,博文推薦分享給大家。 1.前言 6月份開始出沒社區(qū),現(xiàn)在差不多9月了,按照工作的說法,就是差不多過了三個(gè)月的試用期,準(zhǔn)備轉(zhuǎn)正了!一般來說,差不多到了轉(zhuǎn)正的時(shí)候,會(huì)進(jìn)行總結(jié)或者分享會(huì)議!那么今天我就...
閱讀 3559·2023-04-25 19:56
閱讀 1672·2021-11-12 10:36
閱讀 1787·2021-11-08 13:19
閱讀 1548·2019-08-30 14:06
閱讀 3037·2019-08-30 11:01
閱讀 1726·2019-08-29 13:23
閱讀 2741·2019-08-29 11:18
閱讀 3428·2019-08-26 13:35