JS技巧之一行賦值語(yǔ)句能玩出多少花樣
前言
今天,來(lái)做個(gè)測(cè)試,看看一行簡(jiǎn)單的JS賦值語(yǔ)句,有多少種寫法。
測(cè)試語(yǔ)句,僅三行:
var a=1; a=2; console.log(a);
針對(duì)第二行a=2賦值,看能變多少花樣。

第一種變化、寫入到自執(zhí)行函數(shù)中:
var a=1;
(function(){
a=2;
})();
console.log(a);
第二種變化、用eval執(zhí)行:
var a=1; eval(a=2); console.log(a);

這兩種,都比較初級(jí),小白等級(jí)的程序員也能輕松看懂。
接下來(lái),提升一些難度。
第三種變化、變形的eval執(zhí)行:
對(duì)eval中的賦值語(yǔ)句,進(jìn)行一些變化。
var a=1; var b=["a","=",2]; eval(b[0]+b[1]+b[2]); console.log(a);

但eval,似乎也就能玩到這個(gè)水準(zhǔn)。下面再展示些難度更高的。
第四種變化、利用構(gòu)造函數(shù):
var a=1; [].constructor.constructor(a=2); console.log(a);
或:
var a=1; [].constructor.constructor(a=2)(); console.log(a);

第五種變化、構(gòu)造函數(shù)再升級(jí):
var a=1; var b=["a","=",2]; [].constructor.constructor(b[0]+b[1]+b[2])(); console.log(a);
如同eval執(zhí)行內(nèi)容變化一樣,對(duì)構(gòu)造執(zhí)行代碼也用數(shù)組內(nèi)容拼接的方式進(jìn)行變形:

第六種變化、構(gòu)造函數(shù)變形:
將構(gòu)造字符也放入數(shù)組中:
var a=1; var b=["a","=",2,"constructor"]; [][b[3]][b[3]](b[0]+b[1]+b[2])(); console.log(a);

第七種變化、混淆加密:
將上面的JS代碼用JShaman進(jìn)行混淆加密:

得么混淆加密的JS代碼,這時(shí)數(shù)值也被加密:
/*Obfuscated by JShaman.com*/ var a=0x2c0f8^0x2c0f9; var b=['a','=',0xe3b2c^0xe3b2e,'constructor']; [][b[0xa8ddf^0xa8ddc]][b[0xb3a35^0xb3a36]](b[0x3333f^0x3333f]+b[0x84d18^0x84d19]+b[0x50958^0x5095a])(); console['log'](a);

玩這些花樣有什么用處嗎?
當(dāng)然是有的,最后得到的代碼,完全看不出是在執(zhí)行a=2,賦值操作被隱藏了:

當(dāng)需要對(duì)代碼進(jìn)行加密,防止被他人任意閱讀時(shí),這是很有用的方法。
你還有什么新奇的寫法嗎,歡迎探討交流。
總結(jié)
到此這篇關(guān)于JS技巧之一行賦值語(yǔ)句能玩出多少花樣的文章就介紹到這了,更多相關(guān)JS賦值語(yǔ)句內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JavaScript+Canvas實(shí)現(xiàn)酷炫的粒子和流星效果
這篇文章主要為大家詳細(xì)介紹了如何利用JavaScript和Canvas實(shí)現(xiàn)酷炫的粒子和流星動(dòng)畫效果,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-01-01
JSP跨iframe如何傳遞參數(shù)實(shí)現(xiàn)代碼
表單與操作頁(yè)面分離,按鈕按下,click 或者onclick事件觸發(fā),傳遞一個(gè)唯一性的參數(shù)至子頁(yè)面JSP,感興趣的朋友可以了解下2013-09-09
javascript溫習(xí)的一些筆記 基礎(chǔ)常用知識(shí)小結(jié)
在電腦上找到多年前的javascript的一些小筆記,因?yàn)橐獙⒐P記本上面的文件整理一下, 不用的刪除掉, 所以將此篇筆記再發(fā)布一下,存檔到自己的博客吧, 電腦上的文件就刪除了2011-06-06
layui 實(shí)現(xiàn)table翻頁(yè)滾動(dòng)條位置保持不變的例子
今天小編就為大家分享一篇layui 實(shí)現(xiàn)table翻頁(yè)滾動(dòng)條位置保持不變的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-09-09

