重要的, 須要記下來的

//0開頭的8進制
console.log((0771).toString('10'))  //505 
console.log((''+0771).slice(1));  //05
//0x開頭的16進制 
console.log((0XfFF).toString('10'));  //4095 
console.log((''+0XfFF).slice(1));  //095 
//_(:3」∠)_ 暫時就上面兩種特殊了 
console.log((0779).toString('10'))  //779 
console.log((''+0779).slice(1));  //79 
//總結
''+number 至關於 number.toString(10)
字符  unicode[十進制]  unicode[八進制]  unicode[十六進制]  Rex
'哈'  21704        52310       54c8            /\u54c8/
'h'   104         150           68             /\u0068/

字符  ASCII[十進制]    ASCII[八進制]    ASCII[十六進制]
'h'   104            160     68         /\x68/

用肉眼觀察可見, unicode碼包含ASCII嗎, 
ASCII的範圍比較小   \x00 ~ \xff    
中文的unicode範圍是  \u4e00 ~ \u9fa5
因此正則[^\x00-\xff]可表示佔用兩個字節的字符[就是咱們常說的中文佔用兩個字節,英文佔用1個字節的狀況下]
BUT!
在UTF-8x下Unicode 中文會佔3個字節,正確的對應關係是:
0x0000 ~ 0x007f 佔1個字節;
0x0080 ~ 0x07ff 佔2個字節;
0x0800 ~ 0xffff 佔3個字節;
//轉碼函數
function transcoding(str){
        var rexAscii, rexUnicode, tempCode;
        rexAscii = /[\x00-\xff]/;
        tempCode = ('0000'+str.charCodeAt(0).toString(16)).slice(-4);
        return {
            ascii: rexAscii.test(str) ? '\\x'+tempCode.slice(-2) : null,
            unicode: '\\u'+tempCode
        }
    }
/** 關於eval */

//若是服務器響應的來的JSON是帶有一個當即執行的函數,eval會解析他,會參數的後果就是能作everything
var text = '{"name":"sao", "age":"18", "add":(function(){alert(1)})()}';
var json1 = eval('('+text+')');        //解析
var json2 = JSON.parse(text);        //報錯
console.log(json1);
console.log(json2);

//eval的上下文
var age = 1;
function foo(){
    var age = 2;
    eval('age = 3');
    return age;
}
somesayss.log(foo(), 1)        //3
somesayss.log(age, 1)        //1


var age = 1;
function foo(){
    var age = 2;
    window.eval('age = 3');
    return age;
}
somesayss.log(foo(), 1)        //FF,CHROM,IE9 2     IE6-8 3    
somesayss.log(age, 1)        //FF,CHROM,IE9 3     IE6-8 1

//globalEval
function globalEval(str){
    var WIN = window;
    return WIN.execScript ? WIN.execScript(str) : WIN.eval(str);
}
//字符串解析到json
//[函數]和[undefined] 是不能被解析的忽略, 數組內的undifined和function會解析成null
JSON.parse(string);
//json解析到字符串
//[函數]和[undefined]和[']號 是不能被解析的,直接報錯
JSON.stringify(json);
//new Function 的做用域問題;永遠都是在window下面
function foo(){
var a = 1; ;(new Function('a = 2;'))(); return a; } alert(foo());   //1 function foo(){ var a = 1; ;(function(){a = 2})(); return a; } alert(foo());    //2
//嚴格模式沒法使用 arguments.caller
    function bbb(){
        console.log(arguments.callee.caller.toString())
    }
    ;(function(){
        bbb();
    })();
相關文章
相關標籤/搜索