JavaScript基础 -- 笔记(二)

7. 数组

数组是指一组数据的集合,其中的每个数据被称作元素,在数组中可以存放任意类型的元素,数组是一种将一组数据存储在单个变量名下的方式。

7.1 数组的创建方式

js中创建数组有两种方式:

  • 利用new 创建数组
  • 利用数组字面量创建数组

7.1.1 利用 new 创建数组

var arrayName = new Array(); //创建一个新的空数组

7.1.2 利用数组字面量创建数组

//1. 使用数组字面量创建空数组
var arrayName = [];
//2. 使用数组字面量创建并初始化数组
var arrayName = ['name1', 'name2', 'name3'];
  • 数组的字面量是方括号[]
  • 声明数组并赋值称为数组的初始化

7.2 获取数组元素

7.2.1 数组的索引

索引[下标]:用来访问数组元素的序号(数组下标从0开始)

7.2.2 遍历数组

循环遍历

<script>
        //遍历数组
        var arr = ['red', 'green', 'blue'];
        for(var i = 0; i < 3; i++){
            console.log(arr[i])
        }
</script>
/*
red
green
blue
*/

7.2.3 数组长度

使用“数组名.length”可以访问数组元素的数量(数组长度)。

    <script>
        //数组长度
        var arr = ['red', 'green', 'blue'];
        console.log(arr.length)
    </script>
    // 3

7.2.4 增加数组元素

  1. 修改length

     <script>
        var arr = ['red', 'green', 'blue'];
        console.log(arr.length);
        arr.length = 5;
        console.log(arr);
     </script>
    /*
    3
    (5) ["red", "green", "blue", empty × 2]
    */
    

    length 属性是可读写的,默认值为 undefined

  2. 修改索引号

    <script>
        var arr = ['red', 'green', 'blue'];
        console.log(arr.length);
        arr[3] = 'pink';
        console.log(arr.length);
        console.log(arr);
    </script>
    /*
    3
    4
    (4) ["red", "green", "blue", "pink"]
    */
    

8. 函数

函数:封装了一段可被重复执行的代码块

<script>
    function name(参数列表){
        //函数体
    }        
</script>

8.1 函数的参数

实参 :函数调用时 传入的 参数

形参: 函数定义时 参数列表内的元素

  1. 如果实参个数 = 形参个数 正常运算
  2. 如果实参个数 > 形参个数 多余参数不参与运算
  3. 如果实参个数 < 形参个数 多余形参为undefined 输出 NaN

8.2 return

return 终止函数并且只能返回一个值

8.3 arguments

arguments ,所有函数内置的对象,存储了传递的所有实参

arguments是一个伪树组,因此可以遍历,

  • 具有length 属性
  • 按索引方式存储数据
  • 不具有数组的push,pop等方法

8.4 函数表达式 :匿名函数

var 变量名 = function(参数列表){
    //函数体
}

9. 作用域

通常来说, 一段程序代码中所用到的名字并不总是有效和可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。作用域的使用提高了程序逻辑的局部性,增强了程序的可靠性,减少了名字冲突。

全局作用域:整个script标签内 或者是一个单独的is文件

局部作用域: 在函数内部就是局部作用据

9.1 全局变量

在全局作用域下声明的变量叫做全局变量(在函数外部定义的变量):

  • 全局变量在代码的任何位置都可以使用
  • 在全局作用域下var声明的变量是全局变量
  • 特殊情况下,在函数内不使用var声明的变量也是全局变量(不建议使用)

9.2 局部变量

在局部作用域下声明的变量叫做局部变量(在函数内部定义的变量):

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

9.3 作用域链

  • 只要是代码,就至少有一个作用域
  • 写在函数内部的为局部作用域
  • 函数内部如果还有函数,那么在这个作用域中又产生了一个作用域
  • 根据内部函数可以访问外部函数变量的机制,用链式产找决定哪些数据能被内部函数访问,就称为作用域链

10. 预解析

JavaScript代码是由浏览器中的JavaScript解析器来执行的。JavaScript解析器在运行JavaScript代码时候分为两步:预解析和代码执行

  1. 预解析 js引擎 会把js 里面所有 var 还有 function 提升到当前作用域的最前面
  2. 代码执行 按照代码书写的顺序从上到下执行

预解析 分为 变量预解析(变量提升)和 函数预解析(函数提升)

  • 变量提升 就是把所有的变量声明提升到当前作用域的最前面 不提升复制操作
  • 函数提升 就是把所有的函数声明提升到当前作用域的最前面 不调用函数

11. JavaScript 对象

11.1 对象

万物皆对象

11.2 创建对象的三种方式

11.2.1 字面量创建对象

对象字面量:就是花括号{}里面包含了表达这个具体事物(对象)的属性和方法

var obj = {} //创建一个空对象

var obj1 = {
    uname:"name",
    sex:"man",
    say: function(){
        console.log('hello world');
    }
} //创建了一个对象
//属性/方法 键值对 赋值
// 属性/方法之间 , 隔开
// 方法 使用匿名函数

调用方式

// 1
obg1.uname
// 2
obj1['uname']
// 3
obj1.say()

11.2.2 new Object

var obj = new Object(); // 创建了一个空的对象
obj.uname = 'name';
obj.sex = 'man';
obj.say = function(){
    console.log('hello world');
}

11.2.3 构造函数

构造函数:一种特殊的函数,主要用来初始化对象,即为对象成员变量赋初始值,与 new 搭配使用

function 构造函数名(){
    this.属性 =;
    this.方法 = function(){}
}
var 变量 = new 构造函数名();
  • 构造函数首字母大写
  • 构造函数不需要return

11.3 内置对象

js中的对象分为三种:自定义对象、内置对象、浏览器对象

内置对象是js封装好的常用或最基本的功能: Math、Date、 Array、String等

MDNW3C

11.3.1 Math对象

Math.PI      //3.1415926
Math.max()   //最大值
Math.floor() //向下取整
Math.ceil()  //向上取整
Math.round() //四舍五入
Math.abs()   //绝对值

Math.random() //随机数

11.3.2 日期对象

构造函数

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章