JS学习笔记(二)

这篇文章详细介绍了JavaScript的基础知识,包括数组的定义、存取值及遍历,函数的声明、调用和参数,作用域的概念和分类,预解析的机制,对象的创建和使用,以及内置对象如Math、Date和Array的方法。同时,文章还讲解了引用类型和值类型的区别。
摘要由CSDN通过智能技术生成

目录

十、数组

十一、函数

十二、作用域

十三、预解析

十四、对象

十五、内置对象

十六、引用类型(复杂数据类型)和值类型(简单数据类型)的区别


十、数组

1.定义数组

  • 语法:var arr = []  (定义一个空数组)
  • 数组中可以放任意类型的数据,如字符串、数字、布尔值等

2.数组存值

  • 数组中的数据使用索引管理,数组中的数据索引是从0开始
  • 如果一开始就知道数组,可以直接存储数据  如:var arr = [91,88,72,45,63];
  • 可以通过修改数组索引的方式追加数组元素

3.数组取值

  • 语法: 数组名[索引号]
  • 没有索引相对应的数组元素的时候,输出的结果为undefined;

4.数组长度

  • 数组的长度是元素个数,跟索引号没有关系
  • arr.length动态监测数组元素的个数

5.遍历数组

  • 指把数组中的每个元素从头到尾都访问一次
  • 使用for循环来实现遍历数组,循环初始化从0开始,输出的时候用循环计数器当索引号来使用

十一、函数


1.概念
        函数的作用就是封装一段代码,将来可以重复使用。
2.函数的使用
(1)声明函数

  • 语法:
    function 函数名 (形参){函数体}
  • 由于函数一般时为了实现某个功能才定义的,所以通常将函数名命名为动词

(2)调用函数

  • 语法:函数名();
  • 声明函数本身并不会执行代码,只有调用函数时才会执行的函数体代码

(3)函数的参数

  • 形参:形式上的参数 函数定义的时候传递的参数
  • 实参:实际上的参数 函数调用的时候传递的参数
  • 参数的作用:在函数内部某些值不能固定,可以通过参数在调用函数时的传递不同的值进去

(4)函数的返回值return

  • 语法:return 需要返回的结果
  • 函数最终的结果需要返回给函数的调用者,通过return实现
  • 只要函数遇到return就把后面的结果返回给函数的调用者 函数名()=return后面的结果
  • return语句终止函数执行
  • return只能返回一个值,如果逗号隔开多个值,以最后一个为准。
  • 函数没有return的时候返回的值是undefined

(5)函数书写的两种方式

  • 函数声明
function 函数名 (形参){函数体}
  • 函数表达式
var 函数名 = function(参数){数体}  
//等号后面这段称之为匿名函数


(6)自调用函数

  • 语法:
 (function () {
    函数体
  })()
  • 用来写一些为了避免变量污染的代码

3.arguments

  • 只有函数才有arguments对象
  • arguments获取所有实参,是伪数组,并不是真正意义上的数组
  • arguments有length属性,但没有真正数组的一些方法

十二、作用域


1.概念:就是代码名字(变量)在某个范围内起作用和效果,目的是为了提高程序的可靠性,更重要的是减少命名冲突;
2.分类
(1)全局作用域:整个script标签或者是一个单独的js文件

  • 全局变量:

                在任何一个地方都可以使用
                在全局作用域下var声明的变量就是全局变量
                特殊情况下,在函数内不使用var声明的变量也是全局变量(不推荐使用)


(2)局部作用域:在函数内部就是局部作用域

  • 局部变量:

                只在函数内部使用
                在函数内部var声明的变量是局部变量
                函数的形参实际上就是局部变量


3.作用域链:内部函数访问外部函数的变量,采取的是链式查找的方式来决定取哪个值,这种结构称为作用域链

十三、预解析


1.JS解析器在运行代码的时候分为两步:预解析和代码执行
2.预解析js引擎会把js里面所有的var和function提升到当前作用域的最前面
3.预解析分为变量预解析(变量提升)和函数预解析(函数提升)

  • 变量提升不提升赋值操作
  • 函数提升不调用函数

十四、对象


1.概念:对象是由属性和方法组成的 数据类型为object
2.字面量初始化对象: 

var obj = {
属性名:值
}

3.利用new Object创建对象

语法:

var obj = new Object();
        obj.uname = '张三疯';
        obj.age = 18;


4.使用对象
(1)调用对象的属性

对象名.属性名
对象名['属性名']

(2)调用对象的方法:

对象名.方法()

5.遍历对象
(1)语法:

for(var key in obj){

}

(2)作用:对对象的属性进行循环操作

6.构造函数创建对象

(1)语法:

function 构造函数名() {
            this.属性 = 值;
            this.方法 = function () { }
        }
var obj = new 构造函数名();

(2)关键字’new‘在构造函数创建对象中执行过程:

  • new在内存中创建一个新的空对象
  • 让this指向这个新的对象
  • 执行构造函数里面的代码,给这个新对象添加属性和方法
  • 返回这个新对象(所以构造函数里面不需要return)

十五、内置对象

1.数学对象Math
(1)获取随机数

  • 语法:Math.random()
  • 这个方法获取到的随机数范围是[0,1),乘以一个系数便可获取相应范围的随机数

(2)对浮点数取整

  • 向下取整:Math.floor();
  • 向上取整: Math.ceil();
  • 四舍五入取整:Math.round(x) 

(3)Math.abs(x) 求一个数的绝对值
(4)Math.max(x,y...) 求多个数字中的最大值
(5)Math.min(x,y...);  求多个数字中的最小值

2.Date内置对象

  • Date对象是一个构造函数,必须使用new来调用创建

(1)创建Date对象:

var date = new Date();

(2)获取时间的各个部分:

// 获取年份
var year = date.getFullYear();
// 获取月份 , 得到的月份是从0开始的 ,使用 0-11 表示 1-12 月
var month = date.getMonth();
// 获取天
var day = date.getDate();
// 获取小时
var hour = date.getHours();
// 获取分钟
var minute = date.getMinutes();
// 获取秒数
var second = date.getSeconds();
 //获取毫秒 0-999  
date.getMilliseconds();
//返回距 1970 年 1 月 1 日之间的毫秒数
date.getTime()  



//生成一个指定的日期
//传入不同的年月日时分秒
var d1 = new Date(2020,0,1,8,30,59); 
//传入一个指定的字符串
var d2 = new Date('2020-01-01'); 
传入一个 大的数字 -- 从1970年1月1日开始到某个日期的总共的毫秒数
var d3 = new Date(1378594320999); 

3.Array对象

(1)push 

  • 作用:往数组最后添加新成员
  • 返回值:为操作后数组的长度

(2)pop

  • 作用:从数组最后删除成员
  • 返回值:为被删除的成员

(3)unshift

  • 作用:往数组最前面添加新成员
  • 返回值:为操作后数组的长度

(4)shift

  • 作用:从数组最前面删除成员
  • 返回值:为被删除的成员

(5)reverse

  • 作用:反转数组
  • 返回值:翻转后的数组

(6)splice(index,n)

  • 作用:用来删除数组中几个元素,并且用参数列表中声明的一个或多个项,来替换那些被删除的元素
  • 返回值:切割掉的元素

(7)slice(start,end)

  • 作用:切割数组
  • 返回值:切割掉的元素

(8)join

  • 作用:将数组成员通过一个分隔符合成字符串
  • 返回值:合成的字符串

(9)indexOf

  • 作用:返回数组中元素第一次出现的索引值

(10)forEach

  • 语法:
arr.forEach(function(item,index){
  item 是数组里面的每个元素
  index 是数组的每个索引
})

  • 作用:对数组进行遍历循环,通过item,index获取每一轮循环当中的数组元素和索引

(11)filter

  • 作用:循环遍历数组,过滤出满足条件的元素,放到一个新的数组里面
  • 语法:
var result = arr.filter(function(item,index){
  return 条件
});

4.String内置对象

(1)charAt

  • 作用:获取字符串中某个字符
  • 返回值:返回的字符

(2)indexOf

  • 作用:返回字符串中元素第一次出现的索引值

(3)substring

  • 作用:截取字符串 
  • 用法: substring(start,end)

(4)substr

  • 作用:截取字符串 
  • 用法: substr(index,n)

(5)转大小写

  • toUpperCase() 字符串转大写
  • toLowerCase() 字符串转小写

(6)replace

  • 用法:replace("要被替换的字符",替换的字符)
  • 返回值:返回一个新字符串

(7)split

  • 是一种分割字符串的方法,这个方法分割字符串后,会以一个数组的方式把所有的数字给我们
  • 语法:字符串.split(指定分隔符)

十六、引用类型(复杂数据类型)和值类型(简单数据类型)的区别

1.值类型和引用类型:

  • 值类型(简单数据类型):string,number,boolean,undefined,null
  • 引用类型(复杂数据类型): Object,Array,Date

2.区别

  • 基本数据类型的值,赋值后相互不会影响。
  • 引用数据类型的主要特点是赋值方式是传址,并且值存在堆中。引用数据类型的值,赋值后相互影响
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值