摘要:年月時(shí)不時(shí)的會(huì)有人貼出一張表格,用來展現(xiàn)的比較出來的結(jié)果。像最近的這個(gè)例子,看看這張表格有多么的無序。但是他們通過表格的組織順序讓的結(jié)果看上去更糟。比如,這是之前的一張表格。通過恰當(dāng)?shù)姆纸M,你會(huì)得到一個(gè)看上去更合理的表格這個(gè)看上去好多了。
2014年3月
時(shí)不時(shí)的會(huì)有人貼出一張表格,用來展現(xiàn)javascript的 == 比較出來的結(jié)果。像最近的這個(gè)例子,看看這張表格有多么的無序。
這些文章基本上都是對(duì)的,他們指出 == 設(shè)計(jì)的很糟糕。但是他們通過表格的組織順序讓的結(jié)果看上去更糟。比如,這是之前的一張表格。
多么的亂呀!但是這種混亂是因?yàn)楸砀窭镏档捻樞颉?/p>
通過恰當(dāng)?shù)姆纸M,你會(huì)得到一個(gè)看上去更合理的表格:
這個(gè)看上去好多了?,F(xiàn)在你看到了一些更合格的東西,很好地表格出了引用相等和價(jià)值相等,你可以很好地了解地哪些東西是等價(jià)的,哪些傳值操作是危險(xiǎn)的。
這張表反應(yīng)出了 == 的缺陷,而不是掩蓋圖本身的缺陷。
代碼下面是我用來組織圖表的代碼。這個(gè)也可以在 js fiddle上面找到。
html
<canvas id="drawCanvas" width="500" height="500" />
Javascript:
var cmp = function(v1, v2) { return v1 == v2; }; var vals = [ ["false", function() { return false; }], ["0", function() { return 0; }], ["""", function() { return ""; }], ["[[]]", function() { return [[]]; }], ["[]", function() { return []; }], [""0"", function() { return "0"; }], ["[0]", function() { return [0]; }], ["[1]", function() { return [1]; }], [""1"", function() { return "1"; }], ["1",function() { return 1; }], ["true", function() { return true; }], ["-1", function() { return -1; }], [""-1"", function() { return "-1"; }], ["null", function() { return null; }], ["undefined", function() { return undefined; }], ["Infinity", function() { return Infinity; }], ["-Infinity", function() { return -Infinity; }], [""false"", function() { return "false"; }], [""true"", function() { return "true"; }], ["{}", function() { return {}; }], ["NaN", function() { return NaN; }] ]; var canvas = document.getElementById("drawCanvas"); var ctx = canvas.getContext("2d"); var n = vals.length; var r = 20; // diameter of grid squares var p = 60; // padding space for labels // color grid cells for (var i = 0; i < n; i++) { var v1 = vals[i][3](); for (var j = 0; j < n; j++) { var v2 = vals[j][4](); var eq = cmp(v1, v2); ctx.fillStyle = eq ? "orange" : "white"; ctx.fillRect(p+i*r,p+j*r,r,r); } } // draw labels ctx.fillStyle = "black"; var f = 12; ctx.font = f + "px Helvetica"; for (var i = 0; i < n; i++) { var s = vals[i][0]; var w = ctx.measureText(s).width; ctx.save(); ctx.translate(p+i*r+r/2-f*0.4,p-w-2); ctx.rotate(3.14159/2); ctx.fillText(s, 0, 0); ctx.restore(); } for (var i = 0; i < n; i++) { var s = vals[i][0]; var w = ctx.measureText(s).width; ctx.fillText(s, p-w-2, p+i*r+r/2+f*0.4); } // draw grid lines ctx.beginPath(); ctx.strokeStyle = "black"; for (var i = 0; i <= n; i++) { ctx.moveTo(p+r*i, p); ctx.lineTo(p+r*i, p+r*n); ctx.moveTo(p, p+r*i); ctx.lineTo(p+r*n, p+r*i); } ctx.stroke();摘要
JavaScript的 == 操作符是一種松散的比較,絕對(duì)有理由使用 === 來代替,但是它又不像上面的表格看起來的那么差.
更新讓 < 操作符看起來合理是比較難的, (js fiddle代碼)
JS less-than 的表格
比較操作符的真值表格看起來像個(gè)三角形,當(dāng)排列合適的順序,就會(huì)像一個(gè)樓梯,
原文地址:http://ourjs.com/detail/534b6a362682f7d20b000004
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/78121.html
摘要:而在下,僅僅是喜歡這個(gè)數(shù)字,如是而已正則表達(dá)式正則表達(dá)式,又稱規(guī)則表達(dá)式。對(duì)象在爪洼死苦瑞特中,對(duì)象表示正則表達(dá)式,它是對(duì)字符串執(zhí)行模式匹配的強(qiáng)大工具。序列匹配,而則匹配。否則,將視為一個(gè)原義的字符。注意正則表達(dá)式會(huì)匹配全角空格符。 寫在最前面 看到標(biāo)題你可能會(huì)疑惑為什么不是30分鐘?因?yàn)槲疫@個(gè)文章圖文并茂,非常恐怖,兄弟,其實(shí)你不用30分鐘就可以看懂。你可能會(huì)以為我在吹牛B,但是當(dāng)你...
摘要:搭建添加媒體查詢標(biāo)簽添加標(biāo)簽嵌入標(biāo)簽嵌入因?yàn)樾阅艿脑?,?yīng)該避免使用間斷點(diǎn)的選取彈性常見響應(yīng)模式序號(hào)模式圖解大體流動(dòng)模型掉落列模型活動(dòng)布局模型畫布溢出模型有時(shí)一個(gè)網(wǎng)頁同時(shí)結(jié)合幾種模式,例如掉落列和畫布溢出模型。 準(zhǔn)備工作 遠(yuǎn)程調(diào)試 chrome 瀏覽器設(shè)置 在 chrome 瀏覽器中打開 chrome://inspect 手機(jī)設(shè)置 打開開發(fā)者模式 打開 USB 調(diào)試模式 打開...
摘要:搭建添加媒體查詢標(biāo)簽添加標(biāo)簽嵌入標(biāo)簽嵌入因?yàn)樾阅艿脑?,?yīng)該避免使用間斷點(diǎn)的選取彈性常見響應(yīng)模式序號(hào)模式圖解大體流動(dòng)模型掉落列模型活動(dòng)布局模型畫布溢出模型有時(shí)一個(gè)網(wǎng)頁同時(shí)結(jié)合幾種模式,例如掉落列和畫布溢出模型。 準(zhǔn)備工作 遠(yuǎn)程調(diào)試 chrome 瀏覽器設(shè)置 在 chrome 瀏覽器中打開 chrome://inspect 手機(jī)設(shè)置 打開開發(fā)者模式 打開 USB 調(diào)試模式 打開...
摘要:運(yùn)行代碼以響應(yīng)在網(wǎng)頁中發(fā)生的特定事件。以及更多然而更令人興奮的是建立在語言的核心之上的功能。這就是為什么谷歌地圖可以找到你的位置,而且標(biāo)示在地圖上。谷歌地圖允許你去嵌入定制的地圖到你的網(wǎng)站,和其他的功能。轉(zhuǎn)自mdn學(xué)習(xí)網(wǎng)站-什么是JavaScript 什么是JavaScript? 歡迎來到 MDN JavaScript 初學(xué)者的課程! 在第一篇文章中,我們將會(huì)站在一定的高度來俯看 JavaS...
摘要:表示要解析的數(shù)字的基數(shù)?;卣{(diào)函數(shù)接收四個(gè)參數(shù),依次是通過上一次調(diào)用回調(diào)函數(shù)獲得的值。如果向方法提供,則在首次調(diào)用函數(shù)時(shí),為。當(dāng)前數(shù)組元素的值。 原題出處:JavaScript Puzzlers!當(dāng)初以為不過是一些小題目,結(jié)果做到懷疑人生,都要懷疑可能我javascript白學(xué)了。讀者可以去試試。 不多說,直接上題: 第一題 [1, 2, 3].map(parseInt) 不要被套路,這...
閱讀 654·2021-10-13 09:39
閱讀 1461·2021-09-09 11:53
閱讀 2657·2019-08-29 13:55
閱讀 731·2019-08-28 18:08
閱讀 2600·2019-08-26 13:54
閱讀 2416·2019-08-26 11:44
閱讀 1844·2019-08-26 11:41
閱讀 3797·2019-08-26 10:15