(function () { var names = []; return function (name) { addName(name); } function addName(name) { if (!~names.indexOf(name))//如果存在則不添加 names.push(name); console.log(names);// ["linkFly"] } }())('linkFly');
原碼
原碼表示法最高位為符號位,該位為0表示正數,1表示負數。其余位表示數的絕對值。
反碼
對於一個帶符號的數來說,正數的反碼與其原碼相同;負數的反碼為其原碼除符號位以外的各位按位取反。反碼常用來做求補碼過程中的中間形式。
補碼
正數的補碼與其原碼和反碼相同;負數的補碼是對它的原碼除符號位以外各位取反,並在末位加1而得到,即為該數的補碼加1。計算機內的數一般以補碼形式表示。在補碼中用(-128)D代替了(-0)D,注意:(-128)D沒有相對應的原碼和反碼,(-128)D = (1000,0000)B。
求補運算
求補運算不考慮符號位,對它的原碼各位取反,並在末位加1而得到。對一個數進行求補運算所得的是該數相反數的補碼。
if (!~names.indexOf(name)) 中的操作符"!~" 什么意思,不理解,先從~入手。
測試可以得出結果值有這個的規律 -(X+1)
indexOf為0是取反不存在 !0為true添加。indexOf==-1 //to do的xx寫法
