1.function fn(a){
console.log(a);
var a=2;
function a(){}
console.log(a)
}
fn(1)//function a(){} 2
參數a 相當于在函數內聲明了一個變量 a ,函數體內也有一個名字為a的函數聲明,由于預解析會將變量a覆蓋, 所以第一個打印出來的是function a(){},程序繼續(xù)執(zhí)行a被賦值為2所以打印出來2
2.var f=true;
If(f===true){
var a=10;
}
function fn(){
var b=0;
c=30;
}
fn();
console.log(a);
console.log(b);
console.log(c); //10然后報錯
變量a是全局變量,b是函數fn里的變量,在打印的時候找不到變量b 所以報錯
3 var a=10;
a.pro=10;
console.log(a.pro+a)//NaN;
var s=’hello’;
s.pro=’world’;
console.log(s.pro+s)//undefinedhello
基本類型加屬性程序不會報錯,但是會返回undefined,所以第一undefined與數字相加返回NaN,第二個相當于與字符串拼接,所以變成了字符串undefinedhello
4console.log(typeof fn);
function fn(){}
var fn;//function
預解析函數fn覆蓋了變量fn.所有類型是函數
5var s = "aaabbbcccaaabbbaaa";
var arr = s.split('');
var json = {};
for (var i = 0; i < arr.length; i++) {
if (json[arr[i]]) {
json[arr[i]] += 1;
} else {
json[arr[i]] = 1;
}
}
console.log(json);
var max = 0;
var str = '';
for (var key in json) {
if (max < json[key]) {
max = json[key];
str = key;
}
}
console.log(str);