Javascript 基础篇 var变量
Javascript是遵循ECMAScript标准下的一个产物,自然ECMAScript的标准其要遵循
1-1 ECMAScript的变量是松散类型的
1-1-1 ECMAScript的变量是松散类型的,即可以用来保存任何类型的数据(未经初始化的变量,会保存一个特殊值undefined).
var message; alert(message); //undefined
1-1-2 可以在修改变量的同时修改值的类型。
var message = "hi"; message = 100; //有效但是不推荐
1-1-3解决方法
前两天看了网易的前端开发规范倒是挺不错的,可以方便的让程序员看懂定义的变量类型。
方法:类型前缀+有意义的单词 单词首字母都要大写
s:表示字符串。例如:sName,sHtml; n:表示数字。例如:nPage,nTotal; b:表示逻辑。例如:bChecked,bHasLogin; a:表示数组。例如:aList,aGroup; r:表示正则表达式。例如:rDomain,rEmail; f:表示函数 例如:fGetHtml o:表示以上未涉及到的其他对象 如:oButton //例外情况 1:作用域不大临时变量可以简写,如:str,num,bol,obj,fun,arr. 2:循环变量可以简写,比如:i,j,k等
1-1-4(扩展)强类型定义语言
松散类型是与强类型而言的,就如Java是强类型定义语言,在声明变量前要加上变量的类型String,int,boolean等.8种基本类型语言,在未经初始化时会根据类型赋上相应的初始化值.int类型未0,boolean类型为false;
Java 编译器对所有的表达式和参数都要进行类型相容性的检查以保证类型是兼容的。任何类型的不匹配都是错误的,在编译器完成编译以前,错误必须被改正。
java中基础类型是储存在栈空间中的。int a=3;即a指向了一个int类型的数值3.接着int b=3;程序会现在栈内存中查找是否有3这个数值,如果没有则创建一个,然后将b指向,如果存在则将b直接指向。
1-2局部变量
function test(){ var message = "hi"; //局部变量 } test(); alert(message); //message已销毁,不存在message变量,导致出错
1-3 全局变量
javascript的全局对象即为window,在未使用var生命时,相当于未window动态添加了一个message属性,因为message不像java需要提前声明成员变量,javascript在使用时
可以动态添加。
var obj = {}; obj.name = "han"; alert(obj.name); // "han"
function test(){ message="hi"; } test(); alert(message); // "hi"; 这里不添加var关键字,从而创建了一个全局变量 alert(window.message); // "hi";javascript的全局对象即为window,在未用var生明时,相当于为window动态添加了一个message属性.t
虽然省略var操作符可以定义全局变量,但是不推荐这样做。因为在局部变量中定义全部变量很难维护,而且如果有意地忽略了var操作符,也会由于相应变量不会马上就有定义而导致不必要的混乱
1-4同时定义多个变量:
var message = "hi", found = "false", age = 29;
本文参考了《JavaScript高级程序设计》