1.原始类型
JavaScript共有5种原始类型,如下
boolean 布尔,值为true或false
number 数字,值为任何整型或浮点数值
string 字符串,值为单引号或双引号括出的单个字符
null 空类型,该原始类型仅有一个值:null
undefined 未定义,该原始类型仅有一个值:undefined(undefined会被赋值给一个还没有初始化的变量)
前3种类型(boolean,number和string)表现的行为类似,而后两种(null和undefined)则有一点区别
一般用typeof操作符判断变量类型
注意:typeof判断引用类型的数据,除了Function返回function其他都返回object
var num = 10;
var str = "hello world";
var b = true; /* boolean true false */
/* typeof 操作符去判断 */
console.log(typeof num)
console.log(typeof str)
console.log(typeof b)
/* typeof 操作符可能的返回值
undefined------如果这个值未定义
boolean ------如果这个值是布尔值
string ------如果这个值是字符串
number ------如果这个值是数值
object ------如果这个值是对象或null
function ------如果这个值是函数
*/
2.引用类型
JavaScript中引用类型有Array、Date、Function、Object、Error、RegExp
引用类型的值是保存在内存中的对象中,与其他语言不同,JavaScript不允许直接访问内存中的位置,也就是说不能直接操作对线的内存空间,在操作对象时,实际上是在操作对象的引用而不是实际的对象。
数组
/* 1.声明一个数组 */
var arr = ["html","css","js"];
/* 2.Array.isArray() 判断一个对象是不是一个数组 */
console.log(Array.isArray(arr))
console.log(arr instanceof Array);
/* 3.读取数组的值 */
console.log(arr[0])
console.log(arr[2])
/* 4. length属性可以获取数组的长度 */
console.log(arr.length)
/* 5.获取数组的最后一位的值 */
console.log(arr[arr.length-1])
数组的添加和删除
//1.push():栈方法,在数组最后面插入项,返回数组的长度
数组改后的长度 = 数组.push(元素);
//2.pop():取出数组中最后一个元素,返回被删除的元素
被删除的元素 = 数组.pop(); //注意括号里不含参数
//3.unshift():队列方法,在数组最前面插入项,返回数组长度
//4.shift():取出数组中的第一个元素,返回被删除的元素
函数
函数是封装一个特定功能的代码块,函数不调用不会执行
var go = function(x){
console.log(x)
}
go(20);
对象
/* json对象 key,value的形式出现的 */
var cheng = {
"name":"chengchao",
age:20,
sex:"男"
}
/* 2.读取对象属性的值 */
console.log(cheng.name)
/* Tip:如果属性名是变量的情况下,使用中括号去读取 */
console.log(cheng["name"])
/* 3.给对象新添加一个属性 */
cheng.love= "看电影"
console.log(cheng)
/* 4.读取对象所有的属性 Object.keys(obj)*/
console.log(Object.keys(cheng))
/* 5.读取对象所有的value值 Object.values(obj) */
console.log(Object.values(cheng))
/* 6.for in遍历对象 */
for(var k in cheng){
console.log(k); //这里打印的是key
console.log(cheng[k]); //这里打印的是value(用到了2中的tip)
}
3.全局变量和局部变量
全局变量:可以在脚本中的任何位置被引用。一旦你在某个脚本里声明了一个全局变量,就可以从这个脚本中的任何位置(包括函数内部)引用它。全局变量的作用域使整个脚本。
局部变量:只存在于声明它的那个函数的内部,在那个函数的外部是无法引用它的。局部变量的作用域仅限于某个特定的函数。
函数中引用了全局变量
var a=10;
function go(){
a=20; //这里直接写a=20是引用了全局变量a
return a;
}
b = go();
console.log("a="+a);
console.log("b="+b);
输出结果
把这个函数写成这样才正确
var a=10;
function go(){
var a=20; //加上var之后,函数里的a就是局部变量,和外面的a没关系
return a;
}
b = go();
console.log("a="+a);
console.log("b="+b);
输出结果