最近学了一点HTML和JavaScript。 在JavaScript里面有var变量,而且好像只有var变量。换句话说var就是个万精油,他没有确定的类型,他的类型取决于赋值给他的变量的类型。例如:
var a = 123;
var b = "123";
var c = document.getElementById("表单id");
a是数字,而b是字符串,c则是对象。var变量既有优点也有缺点。优点就是我们在声明变量时,统一都用var就OK了,不用去考虑是什么类型。而缺点就是用着用着你可能就不知道这个变量到底是什么类型的了。为了解决这个问题,我把所有的var尽量赋值为对象。例如我们要获取表单的值,我会这样做:
var d = document.getElementById("表单id");
d.value;//获取d的值
而不是这样:
var d = document.getElementById("表单id").value;
这两种方法都可获取表单里的值,但是第一种更好。第一,获取一个对象后我们还可以进行其他操作,而获取单一字符串能进行的操作就十分有限了。第二,如果工作量十分大的话,过了一段时间后你还知道d到底是对象还是字符串吗?所以统一标准对于我们编程十分重要。
这里还要给大家提个醒的是,JavaScript里的对象和java里面一样,变量只是对象的管理者而不是对象的拥有者。下面举个例子:
<form>
<input type="text" name="username1" id="username1">
<input type="submit" onclick="getUsername()">
</form>
<script>
function getUsername(){
var username2 = document.getElementById("username1");
username2.value = "123";
}
</script>
</form>
假如我在表单里填入abc,那么我提交后,后台获取的数据是什么呢?答案是123!不熟悉java的小伙伴可能会觉得不可思议:我只是在javaScript里把一个新的变量username2的值改了嘛,username1的值为什么会变了呢?这就是Java语言的特性,变量只是对象的管理者而不是对象的拥有者。所以username1,username2共同管理一个对象,所以username2改变了,username1也当然改变了。这就是为什么很多同学在刚开始学JavaScript时不理解:为什么函数里的变量改变,会影响到函数外的变量。这跟c语言传指针进入函数是一样道理。