JavaScript与ECMAScript
ECMAScript 通过ECMA-262标准的脚本程序设计语言
ECMAScript标准下有 javascript jscript actionscript
JavaScript分为值类型和引用类型两大类,有时也称为原始值和引用值。值类型:存储在栈(stack)中,一个值类型的变量其实是一个内存地址,地址中存储的就是值本身。引用类型:存储在堆(heap)中,一个引用类型的变量的值是一个指针,指向存储对象的内存处。
还可以将javascript对象分为 本地对象、内置对象、宿主对象。
实际使用中为了使javascript真正单纯,可以将javascript中的类型分为:undefined、null、number、string、boolean、function、Object引用类型。
function就是一种引用类型。另外javascript的值类型背后其实也是一个“引用类型”,就是所有的类型都是从Object中派生而来。比如Number是一个“值类型”,但是其实存在一个引用类型“Number”,可以使用如下方式声明:var oNumberObject = new Number(55); 我们一般都是这样声明 var iNumberObject = 55;
undefined:表示一个对象没i有被定义或者没有被初始化。
null:表示一个尚未存在的对象的占位符。
有意思的是undefined类型是从null派生来的。所以他们是相等的:alert(null == undefined);输出true。
var oTemp = null;
if(oTemp){};//false
if(undefined)();//false
上面的语句if的条件都是false。但如果注释掉var oTemp = null;就会error。
但是无论是否声明过oTemp对象,使用typeof运算符获取到的都是undefined并且不会报错。
alert(typeof oTemp1);//输出"undefined"
所以在程序中使用一个可能没有定义过的变量,并且没有使用typeof做判断,那么就会出现脚本错误。此变量是null或者没有初始化的undefined对象,可以通过if或者==来判断。
未声明的对象只能使用typeof运算符来判断。
typeof运算符返回的都是一个字符串。而程序员经常当作类型来使用。
下面是typeof运算符对各类型的返回结果。
undefined:undefined
null:object
string:string
number:number
boolean:Boolean
function:function
object:object
提醒,一个没有返回值的function实际上返回的是undefined.
显示声明变量var iNum,sName;
即使变量的类型在初始化时已经被确定,但仍然可以在之后把他设置为其他类型。
var sName = "ajax"; sName = 55;
隐式声明不使用var关键词,而直接为变量赋值。隐式声明的变量总是被创建为全局变量。
javascript命名方法:变量用匈牙利命名法,var sName; var iNum;函数用Camel命名法,testMethod();
全局变量是window对象的属性。作用域是当前window窗体。window.sName.
闭包:是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。
简单表述闭包:闭包就是function实例以及执行function实例时来自环境的变量。
闭包在javascript中是隐式创建的。