1.原始类型

JavaScript共有5种原始类型,如下

  1. boolean 布尔,值为truefalse
  2. number 数字,值为任何整型或浮点数值
  3. string 字符串,值为单引号或双引号括出的单个字符
  4. null 空类型,该原始类型仅有一个值:null
  5. undefined 未定义,该原始类型仅有一个值:undefined(undefined会被赋值给一个还没有初始化的变量)

前3种类型(boolean,number和string)表现的行为类似,而后两种(null和undefined)则有一点区别
一般用typeof操作符判断变量类型
注意:typeof判断引用类型的数据,除了Function返回function其他都返回object

  1. var num = 10;
  2. var str = "hello world";
  3. var b = true; /* boolean true false */
  4. /* typeof 操作符去判断 */
  5. console.log(typeof num)
  6. console.log(typeof str)
  7. console.log(typeof b)
  8. /* typeof 操作符可能的返回值
  9. undefined------如果这个值未定义
  10. boolean ------如果这个值是布尔值
  11. string ------如果这个值是字符串
  12. number ------如果这个值是数值
  13. object ------如果这个值是对象或null
  14. function ------如果这个值是函数
  15. */

2.引用类型

JavaScript中引用类型有Array、Date、Function、Object、Error、RegExp
引用类型的值是保存在内存中的对象中,与其他语言不同,JavaScript不允许直接访问内存中的位置,也就是说不能直接操作对线的内存空间,在操作对象时,实际上是在操作对象的引用而不是实际的对象。

数组

  1. /* 1.声明一个数组 */
  2. var arr = ["html","css","js"];
  3. /* 2.Array.isArray() 判断一个对象是不是一个数组 */
  4. console.log(Array.isArray(arr))
  5. console.log(arr instanceof Array);
  6. /* 3.读取数组的值 */
  7. console.log(arr[0])
  8. console.log(arr[2])
  9. /* 4. length属性可以获取数组的长度 */
  10. console.log(arr.length)
  11. /* 5.获取数组的最后一位的值 */
  12. console.log(arr[arr.length-1])

数组的添加和删除

  1. //1.push():栈方法,在数组最后面插入项,返回数组的长度
  2. 数组改后的长度 = 数组.push(元素);
  3. //2.pop():取出数组中最后一个元素,返回被删除的元素
  4. 被删除的元素 = 数组.pop(); //注意括号里不含参数
  5. //3.unshift():队列方法,在数组最前面插入项,返回数组长度
  6. //4.shift():取出数组中的第一个元素,返回被删除的元素

函数

函数是封装一个特定功能的代码块,函数不调用不会执行

  1. var go = function(x){
  2. console.log(x)
  3. }
  4. go(20);

对象

  1. /* json对象 key,value的形式出现的 */
  2. var cheng = {
  3. "name":"chengchao",
  4. age:20,
  5. sex:"男"
  6. }
  7. /* 2.读取对象属性的值 */
  8. console.log(cheng.name)
  9. /* Tip:如果属性名是变量的情况下,使用中括号去读取 */
  10. console.log(cheng["name"])
  11. /* 3.给对象新添加一个属性 */
  12. cheng.love= "看电影"
  13. console.log(cheng)
  14. /* 4.读取对象所有的属性 Object.keys(obj)*/
  15. console.log(Object.keys(cheng))
  16. /* 5.读取对象所有的value值 Object.values(obj) */
  17. console.log(Object.values(cheng))
  18. /* 6.for in遍历对象 */
  19. for(var k in cheng){
  20. console.log(k); //这里打印的是key
  21. console.log(cheng[k]); //这里打印的是value(用到了2中的tip)
  22. }

3.全局变量和局部变量

全局变量:可以在脚本中的任何位置被引用。一旦你在某个脚本里声明了一个全局变量,就可以从这个脚本中的任何位置(包括函数内部)引用它。全局变量的作用域使整个脚本。

局部变量:只存在于声明它的那个函数的内部,在那个函数的外部是无法引用它的。局部变量的作用域仅限于某个特定的函数。

函数中引用了全局变量

  1. var a=10;
  2. function go(){
  3. a=20; //这里直接写a=20是引用了全局变量a
  4. return a;
  5. }
  6. b = go();
  7. console.log("a="+a);
  8. console.log("b="+b);

输出结果
image.png

把这个函数写成这样才正确

  1. var a=10;
  2. function go(){
  3. var a=20; //加上var之后,函数里的a就是局部变量,和外面的a没关系
  4. return a;
  5. }
  6. b = go();
  7. console.log("a="+a);
  8. console.log("b="+b);

输出结果
image.png