js变量初始化声明

就是js可以不声明就给初始化,那样就是一个全局变量了
如i=1;i就是一个全局变量,这样方便程序员写很长的代码时又要跳到开头声明个全局变量,就直接在使用的地方用i=1;(其实这样代码不大很看,不方面阅读)
正常写法是var i;你可以重复声明并初始化一个变量,效果只不过是重新赋值。
变量的作用域:

与其他高级语言一样,js分全局变量和局部变量。所谓局部就是函数内的变量。局部变量的优先级比全局高,因为我的地盘我做主。切记局部变量声明要用var。不用var的结果就是之前说的蛋疼玩意。



再次强调声明变量要用var,否则在函数操作变量的时候如果使用了全局变量就会有改变程序的其他部分所使用的值的危险。



js没有块级作用域。大概是比如一个if(){块级作用域}。这与C、C++、JAVA不同。

因此在一个函数中声明的变量在整个函数中都是有定义的。参看如下代码:

function test(o) {

var i = 0;

if (typeof o == 'object') {

var j = 0;

for (var k = 0; k < 10; k++) {

document.write(k);

}

document.write(k);

}

document.write(j);

}

在java中,这样的代码会报错,因为for循环外面 的两个语句对k和j的访问都会出错。但是在js中不会。即使你在if(){}中声明了变量,但是在整个函数里,这个被声明的变量都是可见的。不过如果在{}外面,那么这个访问变量它的值会是undefined。如果我们再添一行test(1); 这段代码在浏览器里的结果是undefined。

注意:未定义的话js不会报错,因为默认值是undefined。而未声明的话会代码报错无法执行。



再来一个例子:

var scope='global';

function f() {


alert(scope);

var scope='local';

alert(scope);

}

f();

它的结果会让你大吃一斤。因为它的结果跟如下代码没有区别:

function f () {


var scope;

alert(scope);

scope='local';

alert(scope);

}

这两个例子说明了为什么将所有变量声明集中起来放置在函数的开头是个好的编程习惯。我觉得还得加一条,最好别搞什么同名变量。否则如果js理论不是很精通的话很容易出现一些让人匪夷所思的问题。比如这个例子



顺便说一下,js的变量与对象里的属性基本上是一样的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值