<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吗?
<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吗?
<script></script>
内联的JS,变量声明加和不加var的效果相同都是全局变量
在函数中,不加var声明变量就是一个全局变量,加var声明就是一个函数内的局部变量
除了正常运行模式,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的区别
8 回答4.8k 阅读✓ 已解决
3 回答2.6k 阅读✓ 已解决
6 回答3.5k 阅读✓ 已解决
3 回答4.1k 阅读✓ 已解决
5 回答2.9k 阅读✓ 已解决
5 回答6.4k 阅读✓ 已解决
4 回答2.3k 阅读✓ 已解决
你可以把他理解为全局变量,但是他与var声明的变量有有所不同
不同在于没有使用
var
的变量可以直接被delete
删除,但是用var声明的变量则无法删除