if (!("a" in window)) {
var a = 1;
}
alert(a);
var a = 1,
b = function a(x) {
x && a(--x);
};
alert(a);
function a(x) {
return x * 2; }
var a;
alert(a);
function b(x, y, a) {
arguments[2] = 10;
alert(a); }
b(1, 2, 3);
function a() {
alert(this); }
a.call(null); 以上五段小代码是什么结果?为何是?
var a = 1;
}
alert(a);
var a = 1,
b = function a(x) {
x && a(--x);
};
alert(a);
function a(x) {
return x * 2; }
var a;
alert(a);
function b(x, y, a) {
arguments[2] = 10;
alert(a); }
b(1, 2, 3);
function a() {
alert(this); }
a.call(null); 以上五段小代码是什么结果?为何是?
2,a赋值1了,输出1
3,var a; 只是声明,运行时略过,还是输出1
4,本来b值是以最后这个,但在2处赋值了新函数,
所以b = function a(x) { x && a(--x); } ,我们知道这时a=1,它调用a(--x),所以出错了
5。4出错了后面出没执行了
var a = 1;
}
alert(a); // undefined
var a = 1,
b = function a(x) {
x && a(--x);
};
alert(a); //1
function a(x) {
return x * 2; }
var a;
alert(a); //function a(x) { return x * 2; }
function b(x, y, a) {
arguments[2] = 10;
alert(a); } //10
b(1, 2, 3);
function a() {
alert(this); } // [Object window]
a.call(null);
我只是实际测试了一下,爱解释的来解释吧
二:1
三:方法a
四:10
五:window
第二个函数:a 定义的是全局变量,b是赋值,他把一个函数赋值给b
第三个函数:变量a 虽然是后面var声明的变量,实际上相当于var a = function a(){};
第四个函数:函数体内部的变量执行优先级最高,顾a的值就是 10 ;
第五个函数:call方法是把另一个对象定义的方法,交给该对象来用,call的第一个参数是obj,
a.call(null);这句话不会没有任何作用!其实这些理论的js知识,初学者自己深入的理解,知道就可以了~不需要纠结他为啥是这个结果!
小作分析一下,只可做参考~
1、申明提前,那a就是window对象,赋值没执行。所以为undefined
后面都不知道了