javascript - js创建这个对象的时候为什么不用var?
PHP中文网
PHP中文网 2017-04-10 16:40:09
[JavaScript讨论组]

<script>

person=new Object();
person.firstname="Bill";
person.lastname="Gates";
person.age=56;
person.eyecolor="blue";
document.write(person.firstname + " is " + person.age + " years old.");
</script>

不用 var person吗?

PHP中文网
PHP中文网

认证0级讲师

全部回复(9)
ringa_lee

你可以把他理解为全局变量,但是他与var声明的变量有有所不同

不同在于没有使用var的变量可以直接被delete删除,但是用var声明的变量则无法删除

黄舟

<script></script>内联的JS,变量声明加和不加var的效果相同都是全局变量
在函数中,不加var声明变量就是一个全局变量,加var声明就是一个函数内的局部变量

ringa_lee

我就提一个建议:

即使是全局变量,也要用var声明。

黄舟

直接写person相当于window.person
就像直接写alert(1);其实是window.alert(1);

迷茫

不用var的写法是容易出问题的。不用var的话默认变量定义在window上。也就成了全局的

PHPz

没加var 关键字默认为全局变量,为了防止变量污染,还是建议加上var

伊谢尔伦

不加var这个设计是让初学者更快的学习这门语言,后来成了坑。

PHPz

我只想补充下


除了正常运行模式,ECMAscript 5添加了第二种运行模式:"严格模式"(strict mode)。顾名思义,这种模式使得Javascript在更严格的条件下运行。

 - 消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;
  - 消除代码运行的一些不安全之处,保证代码运行的安全;
  - 提高编译器效率,增加运行速度;
  - 为未来新版本的Javascript做好铺垫。
上面是引用自阮一峰博客

说下我的看法,最好每一个变量声明都放在他应在的范围内,并使用var标识符。
这样可以防止污染全局域。

http://www.ruanyifeng.com/blog/2013/01/javascript_strict_mode.html

天蓬老师

不使用var声明的变量默认为全局变量,说它是变量,但其实它是全局对象window/global属性,因为使用var声明的变量是不可删除的,但不使用var声明的变量可以使用delete删除,那么就意味着他是可删除的属性。即window.person/global.person
可以看下我之前写的这篇文章:JavaScript中定义变量时有无var的区别

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号