渡一——*******&&习题整理&&********
1.传字符串返回字节长度
1-1.当前字符位的unicode > 255,那么该字符字节长度为2;
1-2.<255为1;
//1-1 var str = "adfsf;fdkdsflwe"; function bytesLen(str){ var len = str.length;//默认都是1,后面找是2的就加1 for(var i=0;i<str.length;i++){ if(str.charCodeAt(i)>255){ len++ } } return len; } //1-2 function bytesLen2(str){ var len = 0; for(var i=0;i<str.length;i++){ //默认是0,后面判断是加几 str.charCodeAt(i) > 255 ? count += 2 : count++; } return len; }
可正常计算的范围
前17后17位
小数点前17位,后17位
10000000000000001 + 10000000000000001 //小数点前17位 0.10000000000000001 + 0.10000000000000001 //小数点后17位数
面视题整理
作用域
1.
window.onload = function(){ var length = 88; function test(){ console.log(this.length); } var obj = { length:99, action:function(test){ test(); //此处没有调用者,this-->window arguments[0](); //arguments有两个参数,arguments[0]就是test函数,this-->[test,[1,2,3]],this.length=2; } } obj.action(test,[1,2,3]); } var f = obj.action; f(); //this.length-->88;这里还是全局调用 function f(){ console.log(this) //[f,2,3] }; var arr = [f,2,3]; arr[0](); var f1 = arr[0]; f1() //window
2.
//2-1. var a=10; function test(){ console.log(a); //undefined a = 100; console.log(this.a);//this指向window 10,这里调用都是window var a; console.log(a); //100 } test(); //2-2 var a=10; function test(){ console.log(a); //这里只有全局变量a 10 a = 100; console.log(this.a);//100 console.log(a); //100 } test(); //2-3 var d = 100; function f4(){ var d = 200; console.log(this.d); //100 this指向window } f4();
3.
var a = 10; function f(){ var b = 2 * a; //没有this.a 就只取局部变量a,这里a:undefined; b=2*undefined:NaN var a = 20; var c = a + 1; //21 console.log(b); console.log(c); } f1();