**变量**
JavaScript的变量是松散类型的,他不像JAva那样具有很严格的定义规范,所谓松散类型就是可以用来保存任何类型的数据,换句话说,每个变量仅仅是保存值的一个引用而已。定义变量时使用var操作符,后跟变量名,这个变量可以存储任何值,像这种未经定义的变量,会保存一个特殊的值-undefined,当我们定义了变量的值之后,初始化始也只是为这个变量赋了一个值而已;例如下面的:
~~~
<script>
var string="hello,world";
alert(string);
</script>
~~~
这段代码只是在初始化的时候为他赋了一个值而已,并不会根据类型而把他标注为字符串类型的;另外要注意的是,我们再声明变量的时候也可以不使用var 关键字,这样也不会出错,但是并不推荐,我们也可以在修改变量的同时修改值的类型,但是也不推荐;
~~~
<script>
string="hello,world";
string="123"
alert(string);
</script>
~~~
**数据类型**
在ECMAScript中有五种基本简单数据类型,(我们的java有八大基本数据类型。。)分别是:undefined,Null,Boolean,number,String。还有一种复杂数据类型-Object,object本质上是一组无序的名值对组成的。ECMAScript不支持任何创建自定义类型的机制,而所有值最终都将是上述6种数据类型之一。乍一看,好像只有6中数据类型不足以表示所有数据;但是,由于ECMAScript数据具有动态性,因此的确没有再定义其他数据类型的必要了。
我们可以使用typeof操作符来检验返回值的类型。
~~~
<script>
var test1;
alert(typeof test1); //undefined 如果这个值未定义;
var test2=true;
alert(typeof test2); //boolean布尔值;
var test3="abc";
alert(typeof test3); //string 如果这个值是字符串;
var test4=123;
alert(typeof test4); //number 如果这个值是数值;
var test5=new Object();
alert(typeof test5); //object如果这个值是对象;
function test6(){};
alert(typeof test6); //function 函数类型,声明的时候不要带var
</script>
~~~
**Undefined类型:**
Undefined类型只有一个值,即特殊的undefined,在使用var声明变量但未对其加以初始化时,这个变量的值就是undefined;这个跟java有所不同;
**Null类型:**
Null类型是第二个只有一个值的数据类型,这个特殊的值是null,从逻辑角度来看,null值表示一个空对象指针,而这也正是使用typeof操作符检测null值会返回“object”的原因,如果定义的变量准备在将来用于保存对象,那么最好将该变量初始化为null,而表示其他值。这样一来,只要直接检查null值就可以知道对应的变量是否保存了一个对象的引用;
实际上undefined值是派生自null值的;即undefined==null --true;
**Boolean类型:**
Boolean类型是ECMAScript中使用的最多的一种类型,该类型只要两个字面值:true和false,虽然Boolean类型的自面值只要两个,但是JavaScript的所有类型的值都可以转换为Boolean值;使用Boolean();
~~~
var test1="Hello world!";
if(Boolean(test1)){
alert(test1);
};
~~~
这一章,我们了解了JS的基本数据类型,下一次再深入去理解一下数值型和Object这两个特殊的类型吧;
- 前言
- javascript基础与定义
- JavaScript变量
- JavaScript变量二(数据类型,Number,String,Object)
- JavaScript传参的问题
- JavaScript基本类型和引用类型的值
- JavaScript执行环境及作用域
- JavaScript垃圾收集
- JavaScript和JQuery和angularjs操作select
- 搞对象前,你得先有对象
- JavaScript数组
- JavaScript运行原理解析
- Jquery和angularjs获取check框选中的值小技巧
- JavaScript函数表达式
- JavaScript的闭包理解
- JavaScript BOM
- JavaScritpt的DOM初探之Node(一)
- 为什么说DOM操作很慢
- jQuery性能优化