NO1
function bar(){
console.log(s);
}
function test(){
var s=2;
bar();
}
var s=1;
test();
js是詞法作用域和函數(shù)級作用域,function bar(){}的時候就已經(jīng)確定了s的作用域了兰怠,只會在bar函數(shù)的內(nèi)部查找s梦鉴,對s進行RHS查找,如果找不到揭保,就找bar函數(shù)外部的作用域
NO2
function test(){
a=20;
}
test();
alert(a);
對a進行LHS查找時肥橙,沒找到,就在全局var a秸侣;
NO3
function test(){
}
var test;
test();
執(zhí)行存筏,不會報錯,相當于
var test;
function test(){
}
test();
函數(shù)優(yōu)先級高味榛,重復聲明會被忽略
NO4
+function() {
alert(a);
a();
var a = function() {
console.log(1);
}
function a() {
console.log(2);
}
alert(a);
a();
var c = d = a;
}();
alert(d);
alert(c);
相當于
+function() {
function a() {
console.log(2);
}
var a;
alert(a);
a();
a= function() {
console.log(1);
}
alert(a);
a();
var c = d = a;
}();
alert(d);
alert(c);
NO5
請用一句話遍歷變量a(禁止用for已知var a="abc")
const s="abc"
Array.from(s,x=>console.log(x));
const s="abc";
//借數(shù)組里面的方法
Array.prototype.forEach.call(s,x=>console.log(x));
const s="abc";
[...s].map(x=>console.log(x));
NO6
請用一句話算出0-100之間學生的學生等級椭坚,如90-100輸出1等生、80-90為2等生以此類推搏色。不允許使用if switch等
function grade(x){
return 10-(x/10);
}
NO7
var s=[];
var arr=s;
for(var i=0;i<3;i++){
var pusher={
value:'item'+i
},tmp;
if(i!==2){
tmp=[];
pusher.children=tmp;
}
arr.push(pusher);
arr=tmp;
}
console.log(s[0]);
i=0;
pusher ={
value:item0,
children:tmp
}
arr={
value:item0,
children:tmp
}
arr=tmp;
tmp變成中間變量善茎,s=arr=tmp=pusher.children;
arr={
value:item0,
children:tmp
}
arr=s; s進行RHS
下次執(zhí)行 arr.push的時候就是修改上次保存指針的children的值
//半知半解,不是很理解频轿,指針是進行變化了的巾表,arr=s是按址傳遞的