JavaScript变量

JavaScript变量

JavaScript 允许重复声明变量,后声明的覆盖之前的

var a = 1;

var a = 'x';

console.log(a);

// 输出 'x'

JavaScript 允许重复定义函数

JavaScript 没有重载这个概念,它仅依据函数名来区分函数。

后定义的同名函数覆盖之前的,与参数无关。

function test() {

console.log("test");

}

test(); //输出 "test arg0 + undefined"

function test(arg1) {

console.log("test arg" + arguments.length + " + " + arg1);

}

test(1,2); //输出 "test arg2 + 1"

实参个数如果比形参少,那么剩下的默认赋值为 undefined,如果实参传的比形参数量多,那么是全部都会被传进去的,只不过没有对应的形参可以引用(但可以用 arguments 来获取剩下的参数)。

function test(arg1) {

for(var i=0; i

console.log(arguments[i]);

}

}

test(1,2); //输出 1 2

变量与函数重名的时候,变量生效

这涉及到了变量和函数的预解析:

变量声明会被顶置,函数声明也会被顶置且比变量更先声明。

变量的声明和赋值语句一起写时,JS引擎在解析时,会将其拆成声明和赋值2部分,声明置顶,赋值保留在原来位置。

声明过的变量不会再重复声明。

var a = 100;

function a() {

return "function";

}

console.log(a); //输出 100

console.log(a());

/*

报错

Uncaught TypeError: a is not a function

(anonymous function) @test.html:9

*/

JS 中有两种函数,一种是普通函数,一种是函数对象。下面的这种就是“函数对象”,它实际上是声明一个匿名函数,然后将该函数的 init 方法赋值给该变量。

var a = 100;

var a = function() {

return "function";

}

console.log(a);

/*

输出

function() {

return "function";

}

*/

console.log(a()); //输出 "function"

函数与内部变量重名

定义普通函数,即在 window 变量下,定义一个 key,它的名字为该函数名,值为该函数的地址。函数内部的 this 指向 window 对象。

function a() {

console.log(this); //输出 window{...}

this.a = 1; //即 window.a = 1,此时window下的function a已经被该变量覆盖了。

var a = 5; //下面的这几个变量都是局部变量,仅在花括号范围内有效。

a = 10;

var v = "value"

return "function";

}

console.log(a); //输出 function a {...}

console.log(a()); //输出 "function"

console.log(a); //输出 1

console.log(v);

/*

输出

Uncaught ReferenceError: v is not defined

(anonymous function) @ mycolor.html:15

*/

TheArrow TheArrow

191***030@qq.com

参考地址

7年前 (2019-01-16)

相关推荐

天龙八部手游 天龙怀旧服多久算回归?
魔兽世界无敌技能代码(魔兽世界无敌技能怎么设置)
平板支撑一天练多久最好
365bet线上手机投注

平板支撑一天练多久最好

06-28 187