js声明变量使用var声明与不使用var声明比较
来源:互联网 发布:中文波斯语翻译软件 编辑:程序博客网 时间:2024/05/22 19:48
今天项目上遇到了这个问题,一个jsp页面二次进入后, 对KendoTree 的数据源的操作在本页面无效,在后台打印出来却发现数据已经改变,改了好久,最后发现了是使用了var声明,而且多个页面的变量名一样(代码是复制过来的……) 。
网上找的一个解释
Javascript声明变量的时候,虽然用var关键字声明和不用关键字声明,很多时候运行并没有问题,但是这两种方式还是有区别的。可以正常运行的代码并不代表是合适的代码。
JS中变量申明分显式申明和隐式申明。
Var i=100 显示申明
i=100 隐式申明
在函数中使用var关键字进行显式申明的变量是做为局部变量,而没有用var关键字,使用直接赋值方式声明的是全局变量。
当我们使用访问一个没有声明的变量时,JS会报错。而当我们给一个没有声明的变量赋值时,JS不会报错,相反它会认为我们是要隐式申明一个全局变量,这一点一定要注意。
var num = 1是在当前域中声明变量. 如果在方法中声明,则为局部变量;如果是在全局域中声明,则为全局变量。而num = 1,事实上是对属性赋值操作。首先,它会尝试在当前作用域链(如在方法中声明,则当前作用域链代表全局作用域和方法局部作用域etc。。。)中解析 num; 如果在任何当前作用域链中找到num,则会执行对num属性赋值; 如果没有找到num,它才会在全局对象(即当前作用域链的最顶层对象,如window对象)中创造num属性并赋值。
注意!它并不是声明了一个全局变量,而是创建了一个全局对象的属性。
写在这给自己做个提醒了。
0 0
- js声明变量使用var声明与不使用var声明比较
- js声明变量使用var声明与不使用var声明比较
- js声明变量使用var声明与不使用var声明比较
- js 变量声明 (var使用与不使用的区别)
- js 变量声明 (var使用与不使用的区别)
- javascript var声明变量与不声明的区别
- C#变量声明中var的使用
- 使用delete删除var声明的变量
- 使用var、let、const声明变量
- js中的var(声明局部变量)
- var声明
- var与Javascript变量隐式声明
- js中var声明和不加var的区别
- 声明变量时是否使用var的不同
- javascript中必须使用var声明局部变量的情况
- Node.js 中 变量声明 带var 和不带var 的情况
- 变量声明是如果不使用 var&nb…
- Javascript变量声明:var语句
- poj3627~贪心~排序~小水题
- Python的lambda匿名函数
- nyoj100一的个数
- unresolved external symbol _WinMain@16
- 《C++Primer》学习笔记(1-5章)
- js声明变量使用var声明与不使用var声明比较
- database link概述
- LLVM (7) 模块设计带来的一些有趣的能力
- 阿网面试43
- 《C++Primer》学习笔记(6-10章)
- LSM实现访问控制
- 最近开发遇到的cocos2dx问题集(版本2.2.3,studio版本1.6.0.0)
- 1-2 输出N个数的平方和立方值
- Unable to load configuration. - bean - jar