说明:根据容器能够存储哪些数据,进行了分类,分为如下几类:
(1)字符串类型
JavaScript的字符串类型的数据,通过引号定义的(单引号、双引号),而且单引号、双引号没有区别
<script type="text/javascript">
var box = 'this is string';
var v2 = "box";
console.log(box);
console.log(v2);
//如果是字符串解析变量,就得通过字符串拼接
var v3 = "this is "+v2;
console.log(v3);
</script>
(2)数值类型
说明:在JavaScript中小数、整数都是数值类型
<script>
var v1 = 100;
var v2 = 3.14514;
//输出变量的类型:typeof()
console.log(typeof(v1)); //number
console.log(typeof (v2));//number
var str = 'hello';
var result = parseInt(str);
console.log(result);//NaN
//isNaN()用来判断是否不是一个数值,如果是数字就返回false,
//不是返回true
console.log(isNaN(result));//TRUE
</script>
(3)布尔类型
布尔类型用来保存一些状态,或者对立的一对数据,例如:
开、关
是、否
对、错
而且布尔类型通常是用来作为条件判断的
在PHP中 ’0’ 、[] 被转换成false
在JavaScript中,’0’、[] 会被转换成true
如何将数据类型进行强制转换呢?Boolean()函数
<script>
var str = '0';
var arr = [];
var res1 = Boolean(str);
var res2 = Boolean(arr);
console.log(res1);//true
console.log(res2);//true
</script>
(4)函数类型
说明:为什么说函数也是一个数据类型,因为我们可以定义变量保存函数
函数的写法:
<script>
var f1 = function () {
}
function f2() {
}
console.log(typeof (f1));//function
console.log(typeof (f2));//function
</script>
说到函数,不得不提的就是变量的作用域:
在JavaScript中,函数外部定义的变量就是全局变量,可以在脚本的任何地方使用,如果在函数内部定义的变量,就是局部变量,只能在函数内使用
补充:如果在函数内部声明变量时,没有使用var关键字,表示该变量就是全局的变量
<script>
// var f1 = function () {
//
// }
//
// function f2() {
//
// }
//
// console.log(typeof (f1));//function
// console.log(typeof (f2));//function
//全局变量,可以在函数内外部使用
var v1 = 'global';
//通过function关键字定义函数
function f2() {
//如果局部范围定义了函数,就不在去全局作用域查找
console.log(v1);//undefined
var v1 = 'function';
console.log(v1);//function
v3 = 'this is v3';//全局变量,加上var关键字变为局部变量
}
f2();
console.log(v3);//this is v3
</script>
变量的作用域链:
说明:当我们在函数内部访问一个变量时,会先在函数内部查找,如果没有找到,则去上一级作用域查找,这个查找的过程就称之为作用域链
JavaScript中除了形参、实际参数之外,还可以通过arguments对象进行管理
第一个参数保存到arguments数组的第一个元素,第二个参数会保存到arguments数组的第二个参数上........
function getSum(a,b) {
return a+b;
}
function Sum() {
console.log(arguments[0]);
console.log(arguments[1]);
console.log(arguments[2]);
var sum = 0;
for ( var i = 0 ;i<arguments.length;i++ ) {
sum += arguments[i];
}
return sum;
}
var result = Sum(1,3,5,7,9,2,4,6,8);
console.log(result);
(5)数组类型
上面学习的4个类型,只能用来保存一个值;
var str = ‘hello’; var num = 100;
如何让一个变量保存多个值?使用数组、对象实现,所以我们也称数组、对象为复合类型的数据
定义数组,有2种方式:
1:new Array()
2:快捷语法:[]
<script>
var arr = new Array('zhangSan','lisi','wangwu');
//简洁的语法
var arr = [1,3,5,7,9];
console.log(arr);
</script>
数组的遍历:
方法1:通过for循环遍历
<script>
var arr = new Array('zhangSan','lisi','wangwu');
//
// //简洁的语法
// var arr = [1,3,5,7,9];
// console.log(arr);
for(var i=0;i<arr.length;i++ ){
console.log(i);
console.log(arr[i]);
}
</script>
方法2:通过for...in循环
每遍历一次,将该元素的下标赋值给i变量
<script>
var arr = new Array('zhangSan','lisi','wangwu');
for( var a in arr ){
console.log(a);
console.log(arr[a])
}
</script>
(6)对象类型
数组只能定义索引数组,如果保存一些关联类型的数据,请使用对象
对象就是一些属性、值得集合
- 方法1:通过构造器创建对象
构造器,其实就是一个普通的函数,只是当我们以new的形式调用该函数时,就会生成一个对象,这个时候,我们称之为构 造 函数、或者构造器
在构造器(构造函数内部),通常使用this指向当前对象
<script>
function Snake() {
this.name = '小青';
this.color = 'green';
this.eat = function () {
console.log('能吃人');
}
}
var result = new Snake();
//访问对象的成员
console.log(result.name);
//访问对象的方法
result.eat();
</script>
方法2:快捷语法:{}字面量
JavaScript object notation,JavaScript对象表达法
字面量语法格式:
{
属性名:属性值,
属性名:属性值,
方法名:function(){}
}
<script>
var Game = {
name:'打蜜蜂',
fire:function () {
console.log('发射子弹');
}
};
console.log(Game.name);
Game.fire();
</script>
对象成员的访问:
访问对象的成员:可以通过 . 点语法,也可以使用[]语法,访问对象的成员
而且有时候,我们还必须使用[]的语法访问对象成员,例如:
<script>
function Snake() {
this.name = '小青';
this.color = 'green';
this.eat = function () {
console.log('能吃人');
}
}
var result = new Snake();
for ( var i in result ) {
console.log(result[i]);
}
</script>
(7)null类型
null,指的是一个空对象的指针,可以理解为空对象的占位符
这里是一个对象,但是里面什么也没有,还是空的
(8)undefine类型
一个函数没有返回值,或者声明了变量,但是未初始化值,他就是undefined