javascript 关于用var声明变量的一次实践

今天在jsp中,想判断<input>标签输入是否为空,在点击按键之后的function login()里加上了判断,代码如下:

function login(){
    var p = document.getElementById("past_pwd").value;
    if(p==""){
        alert("原密码不可为空")
        return ;
    }
}
然后发现运行到这一行就没有了,代码也不向下运行,控制台也没有报错或信息(个人猜测:大概是js代码出错不会经过eclipse控制台?),但是我在index.jsp也用了相同的手法呀,在那里的代码是:
var id = document.getElementById("id_user").value;

就只有变量名不同,然后我把var p换成了var id,发现可以继续运行,这让我十分困惑,想了想之后把var删了,发现一切都可以正常运行。赶忙百度 js中声明变量用不用var的区别 ,大概内容如下:

1.var id = null;声明变量id,作用域是当前域及其闭包,id = null;是赋值语句,先在当前域中寻找id变量,找到就赋值,没找到就在“当前作用域的最顶层对象“添加一个id属性,比如在浏览器中就是为window对象添加一个名为id的属性。

2.var声明的变量是不可删除的,而后者可以通过delete id;删除。

3.

function varTest() {
    var x = 1;
    if (true) {
        var x = 2;       // 同样的变量!
        console.log(x);  // 2
    }
    console.log(x);  // 2
}

function letTest() {
    let x = 1;
    if (true) {
        let x = 2;       // 不同的变量    
        console.log(x);  // 2  
    }
    console.log(x);  // 1
}

4.对同一变量用var多次声明也是可以的,赋值也可以。

之后我再次用var声明变量,打开ie浏览器访问localhost(之前一直用火狐),发现一切正常。

再后来我在火狐和eclipse内置浏览器运行也可以了,猜测是window对象生命周期的原因?

存疑:运行到var p = document.getElementById().value;就没了不知道是什么情况,也不知道是什么原因。挖一个坑,将来回来填。

参考资料:

https://www.cnblogs.com/liuna/p/6140901.html

http://www.runoob.com/js/js-variables.html


猜你喜欢

转载自blog.csdn.net/qq_31293215/article/details/79732387