读廖雪峰老师《JavaScript教程》笔记——数据类型篇(二)

四.字符串

4.1 定义

字符串就是零个或者多个排在一起的字符,放在单引号或者双引号之中;

4.2 转义符

4.3 字符串与数组

方括号中的数字超过字符串长度,或者方括号中根本不是数字,则返回undefined (无法改变字符串的字符);

4.4 length属性

length属性:返回字符的长度,该属性也无法改变;

4.5 字符集

五.对象

5.1 概述

对象(object)是JavaScript语言的核心概念,也是最重要的数据类型。对象是一组键值对(key-value)的集合,是一种无序是复合数据集合。
键名:对象的所有键名都是字符串,因es6引入了symbol值也可以作为键名,所有加不加引号都可以。键名是数值,会自动转换为字符串;(注:不符合标识符命名条件,必须加引号)对象属性间用逗号隔开;

5.2 对象的引用

不同是变量名指向同一个对象,那么他们都是这个对象的引用,指向同一个内存地址,修改其中一个变量,会影响其他所有变量。
注意:内存地址引用(对象引用):一个改变,都改变;
值引用(值拷贝):一个改变,不影响另一个;

5.3 属性的操作

  • 读取: 1.点运算符 obj.p (不能为数值,会被当成小数) ;2.方括号运算符 obj[‘p’] (键名必须加引号,不然会当成变量);

  • 赋值:1.点运算符赋值 ;2.方括号运算符赋值 (允许后绑定)

  • 查看:object.keys方法(查看对象所有属性);例 object.keys(obj) //[‘key1’ ,‘key2’]

  • 删除属性:delete命令用于删除对象的属性,删除成功返回true ;(删除一个不存在的属性也返回true);

  • 属性是否存在:in运算符(检测对象是否包含某个属性,检查的是键名)
    hasOwnproperty(判断对象的自身属性)

  • 属性的遍历:for…in循环

  1. 它遍历是是对象所有可遍历的属性,会跳过不可遍历是属性;2.不仅遍历对象自身属性,还可以遍历继承属性(除toSting属性外);

5.4 with语句

with(对象){语句;}
作用:操作同一个对象的多个属性时,方便书写;with内部赋值操作,必须是对象已经存在的属性,否则会创建一个全局变量;

六.函数

函数是一段可以反复调用的代码块,函数还可以接受不同参数,返回不同值;

6.1 概述

  • 函数的声明:
    1.function命令:function命令后面是函数名,函数名后面是圆括号,函数体在大括号中; function add(){};
    2.函数表达式:变量赋值的写法,将匿名函数赋值给变量
    var name=function(){};(注:使用函数表达式声明函数时,function后带函数名,仅在函数内部有效;)
    3.Function 构造函数 ;var add=new Function();
  • 函数重复声明:
    如果同一个函数被多次声明,后声明就会覆盖前面的声明;前一次声明的任何时候都无效;
  • 函数名的提升:
    JS引擎将函数名视同变量名,采用function命令声明的函数时,整个函数会像变量声明一样,被提前到了代码的头部。但是采取赋值语句定义函数,JavaScript会报错;

6.2 函数的属性和方法

  • name属性:函数的name属性返回函数的名字;通过变量赋值声明的函数name属性返回变量名;(如果是具名函数,则复返回关键字function之后的函数名)
  • length属性:返回函数预期传入的参数个数,即函数定义的参数个数;
  • toString():返回一个字符串,内容是函数的源码;内部注释也可以返回;

6.3 函数的作用域

  • 定义: (变量存在的范围),在ES5中,一种全局作用域,即变量在整个程序中一直存在,另一个是函数作用域,变量只在函数中存在;ES6又新增了块级作用域;(var 命令来说,局部变量只能在函数内部声明,其他区域中一律为全局)
  • 函数内部的变量提升:var 命令声明的变量,不管什么位置,都会提升到函数体的头部;
  • 函数本身的作用域:函数本身也是一个值,也有自己的作用域,它的作用域与变量一样,就是其声明所在的作用域,与其运行时所在作用域无关;

6.4 参数

  • 定义:函数运行时,需要提供外部的数据,不同外部数据会得到不同的结果,这种外部数据就是参数;
  • 参数的省略:函数参数不是必须的,JavaScript允许省略参数;
  • 传递方式(参数):1.原始类型(数值,字符串,布尔值)。传值传递(不影响外部);2.复合类型(数组,对象,其他类型),传址传递(会影响外部);3.特殊情况:如果函数内部修改的,不是参数对象的某个属性,而是替换掉整个参数,这时是不会影响原始值的;
  • 同名参数:同名的参数,则取最后出现的那个值;
  • arguments对象包含了函数运行时的所有参数,这个对象只存在函数体内部,才可以使用; 1.arguments.length 属性:判断函数调用时到底几个参数;2.arguments很像数组。但是一个对象;3.arguments.callee属性,返回对应原函数;

6.5 函数的其他知识点

  • 闭包:定义在应该函数内部的函数,本质上闭包是将函数内部与函数外部连接的桥梁;作用:读取函数内部的变量;变量始终保持在内存中;
  • 立刻调用的函数表达式(IIFE)
    (function(){} ());

6.6 eval命令

eval命令接受一个字符串作为参数,并将这个字符串当中语句执行。

七.数组

7.1 定义

数组(Array)是按照次序排列是一组值,每个值的位置都是有编号的,整个数组用方括号表示,(编号从0开始),任何类型的数据,都可以放入数组;

7.2 数组的本质

数组属性一种特殊的对象,typeof运算符返回1数组类型是“object”

7.3 length属性

数组的length属性,返回数组的成员数量;

  • 数组的数字键不需要连续,length属性的值总是比最大的那个整数键大1;
  • length属性是可写的,如果人为设置一个小于当前成员数的值,该数组的成员数量自动减少到了length设置的值。如果认为设置length大于当前元素个数,则数组的成员会增加到这个值,新增的位置都是空位,undefined.如果人为设置不合法的值,JavaScript会报错;

7.4 in运算符

检查某个键名是否存在的运算符in ,适用于对象,也适用于数组;

7.5 for…in循环和数组的遍历

  • for…in 循环不仅可以遍历对象,也可以遍历数组,毕竟数组只是一个特殊对象,但是for…in不仅会遍历数组的所有数字键,还会遍历非数字键。
  • 数组的遍历可以考虑使用for循环或while循环;
  • 数组的方法,也可以用来遍历数组;

7.6 数组的空位

  • 定义: 数组的某个位置是空元素,即两个逗号之间没有任何值,我们称该数组存在空位,空位不影响length属性(最后一个元素后面有逗号,并不会参数空位);
  • 使用delete命令删除一个数组成员,会形成空位,并且不影响length属性。
  • 使用forEach方法,for…in结构,以及object.keys方法进行遍历,空位都会被跳过。而undefined,遍历时不会被跳过

7.7 类似数组的对象

  • 定义:如果一个对象的所有键名都是正整数或零,并且length属性,那么这个对象就是很像数组,语法上称为“类似数组的对象”;
  • 与数组区别:length属性不是动态的;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值