JS技巧之一行賦值語句能玩出多少花樣
前言
今天,來做個測試,看看一行簡單的JS賦值語句,有多少種寫法。
測試語句,僅三行:
var a=1; a=2; console.log(a);
針對第二行a=2賦值,看能變多少花樣。
第一種變化、寫入到自執(zhí)行函數(shù)中:
var a=1; (function(){ a=2; })(); console.log(a);
第二種變化、用eval執(zhí)行:
var a=1; eval(a=2); console.log(a);
這兩種,都比較初級,小白等級的程序員也能輕松看懂。
接下來,提升一些難度。
第三種變化、變形的eval執(zhí)行:
對eval中的賦值語句,進(jìn)行一些變化。
var a=1; var b=["a","=",2]; eval(b[0]+b[1]+b[2]); console.log(a);
但eval,似乎也就能玩到這個水準(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ù)再升級:
var a=1; var b=["a","=",2]; [].constructor.constructor(b[0]+b[1]+b[2])(); console.log(a);
如同eval執(zhí)行內(nèi)容變化一樣,對構(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ù)值也被加密:
/*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)需要對代碼進(jìn)行加密,防止被他人任意閱讀時,這是很有用的方法。
你還有什么新奇的寫法嗎,歡迎探討交流。
總結(jié)
到此這篇關(guān)于JS技巧之一行賦值語句能玩出多少花樣的文章就介紹到這了,更多相關(guān)JS賦值語句內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JavaScript之BOM?location對象+navigator對象+history?對象
這篇文章主要介紹了JavaScript?BOM中的?location對象、navigator對象、history?對象,下面圍繞他們的相關(guān)語法及各種資料展開文章詳細(xì)內(nèi)容,需要的小伙伴可以參考一下,希望對大家有所幫助2021-12-12微信小程序利用for循環(huán)解決內(nèi)容變更問題
這篇文章主要介紹了微信小程序利用for循環(huán)解決內(nèi)容變更問題 ,本文分步驟通過實例代碼詳解給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2020-03-03JavaScript?中的數(shù)據(jù)類型Number
這篇文章主要介紹了JavaScript?中的數(shù)據(jù)類型Number,Number?類型使用?IEEE?754?格式表示整數(shù)和浮點(diǎn)值,下文相關(guān)詳細(xì)資料介紹,需要的小伙伴可以參考一下2022-04-04Javascript連接Access數(shù)據(jù)庫完整實例
這篇文章主要介紹了Javascript連接Access數(shù)據(jù)庫的方法,涉及javascript針對access數(shù)據(jù)庫的連接、關(guān)閉及增刪改查等常用操作技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-08-08