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(){},程序继续执行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);