js笔记--5

一、数组

1.数组(Array)

定义:就是一组数据的集合,存储在单个变量下(数组里边的数据 成为数据元素)

(1)创建数组
  • 利用new 创建数组 
    var arr = new Array();    //创建了一个 空数组

    利用数组字面量创建数组 var arr1 = []; //创建了一个 空数组

  • 注意点:

  • 获取数组元素 数组名[索引号] 索引号从0开始
    数组里边可以存放 任意类型的数据(字符串、数字、布尔值等)


  • (2)遍历数组

    定义:就是把数组的元素从头到尾访问一次

    注意点:

    遍历是通过 for循环 进行的 (想把数组里边的值取出来 就通过遍历 for循环)
    索引号 i 从0开始  ; i 的范围 不带等号
    arr [ i ]是 数组元素第 i 个  ;   i  是计数器(当索引号使用)

  • 2.冒泡排序 ★

    定义:一次比较两个元素,如果它们的顺序错误就把它们交换过来(从大到小or从小到大的顺序)

            var arr = [4, 1, 2, 3, 5]; //从大到小排序
            for (var i = 0; i <= arr.length - 1; i++) { //外层循环 管轮数
                for (var j = 0; j <= arr.length - i - 1; j++) { //内层循环 管每一轮的交换次数
                    // 内部交换2个变量 前一个和后一个数组元素相比较
                    if (arr[j] < arr[j + 1]) {
                        var temp = arr[j];
                        arr[j] = arr[j + 1];
                        arr[j + 1] = temp;
                    }
                }
            }
            console.log(arr);
     
         // 由于每一轮循环都会确定一个当前轮数下的最大元素,因此在下一轮循环中可以减少遍历的元素个数
        // arr.length - i - 1 表示未排序部分的长度
       //  -i目的:忽略已经排好的末尾部分,减少内层循环的遍历次数 (i是轮数 )
     

二、函数


1.函数


定义:函数就是封装了一段可以被重复调用执行的代码块 目的:实现大量代码的重复使用

命名:函数命名一般用 动词 get Sum 等,变量命名一般用 名词 sum等

算法:观察变化 找出规律 转换为代码

函数的封装:把一个或者多个功能通过函数的方式封装起来,对外只提供一个简单的函数接口

简单理解:封装 就是将电脑配件整合组装到机箱中 (类似快递打包)

函数的使用:

声明函数 和 调用函数 
声明函数 有两种方式   1.利用函数关键字 自命名函数  2. 使用函数表达式 声明函数 (匿名函数)
函数不调用 自己不执行

  // 函数的使用:声明函数 和 调用函数
 // 1.声明函数  两种方式:(1)利用函数关键字自命名函数 (2) 使用函数表达式声明函数 (匿名函数)
      function 函数名(){
           函数体
      }
 
        function sayHi() {
            console.log('hi~~');
        }
        // 2.调用函数  函数名();
        sayHi();
 
     // (2) 函数表达式(匿名函数)★
        // var 变量名 = function(){
        // 函数体
        // }
        var fun = function (aru) {
            console.log('我是函数表达式');
            console.log(aru);
        }
        fun('我传递参数给aru');

2.形参 和 实参


 形参:声明函数时 小括号里边的为形参(形式上的参数)
 实参:函数调用时,小括号里边的是实参(实际的参数)
注意点:

 形参是用来接收实参的
 形参可以看做是不用声明的变量
 尽量让实参和形参 个数相匹配

 函数可以带参数 也可以不带参数 (带参数的话,参数个数不限)

在js中,形参默认值是:undefined

参数作用:函数内部某些值不固定,我们可以通过参数在调用函数时传递不同的值进去
 

     // function 函数名(形参1,形参2...){
 
        // }
        // 函数名(实参1,实参2...)
 
        // 形参和实参 的执行过程  arguments 参数
        function cook(aru) { // 类似于赋值操作 aru = '辣子鸡'
            console.log(aru);
        }
        cook('红烧排骨');
        cook('辣子鸡');

3.函数返回值 return


函数只是实现某种功能,最终的结果是需要返回给函数的调用者--函数名() ,这就需要通过return实现
只要函数遇到return,就把return后边的结果 返回给了函数的调用者 相当于进行了一次赋值操作,函数名( ) = return后面结果
return 只能返回一个值 如果用逗号隔开多个值 以最后一个为准

   // 代码比较:
        // 1. 把实参传给 形参 然后打印出来 
        function cook1(aru) {
            console.log(aru);
        }
        cook1('卤猪蹄')
 
        // 2. 把实参传给 形参 再把return后面的值 返回给调用者cook(); 然后打印出来
        function cook(aru) {
            return aru;
        }
        console.log(cook('大肘子'));

4.区别:continue、break、return

  • continue:退出本次循环,继续执行剩余次数的循环
  • break:退出整个循环
  • return:退出循环,返回return语句中的值,结束当前的函数体里边的代码


5.arguments的使用:


当我们不确定有多少个参数的时候,可以用arguments来获取
每个函数都内置的有arguments对象

arguments中 存储了传递的所有实参

arguments的展示形式 是一个 伪数组,因此可以进行遍历

伪数组特点:

具有数组的 length 属性
按照 索引 的方式进行存储
它没有真正数组的一些方法  pop() 、push() 等方法

6.作用域


作用域:就是代码名字(变量) 在某个范围内 起作用和效果 目的:提高程序可靠性 减少命名冲突

全局作用域:整个script标签 或者是 一个单独的js文件 内起作用
局部作用域:又叫做函数作用域,在函数内部的就是局部作用域 这个代码的名字只在函数内部起效果和作用
变量的作用域

全局变量:在全局作用域下的变量 全局下都可以使用

如果在函数内部 没有声明直接赋值的变量也属于 全局变量 ★

局部变量:在局部作用域下的变量 或者 在函数内部的变量就是 局部变量

函数的形参也可以看做是局部变量

7.关于块级作用域 {}


现阶段我们的js中 没有块级作用域

js没有块级作用域 我们在花括号写的变量 也可以被外部调用 ★
不要和局部作用域(函数作用域) 弄混淆了 

    // 块级作用域 {} 
        // 在java中
        // if (xx) {
        //     int num = 10;
        // } 
        // 外面 是不能调用num的
 
        //注意:
        // js没有块级作用域 我们在花括号写的变量 也可以被外部调用 ★
        // 不要和局部作用域 弄混淆了 ★
        if (3 < 5) {
            var num = 10;
        }
        console.log(num); // 10

8.作用域链

 作用域链:内部函数访问外部函数的变量 采取的 链式查找的方式 目的:用于决定取哪个值

  • 采用 就近原则 ★
  • 站在目标出发,一层一层向外查找 

  • 三、对象

  • 1.对象


  • 定义:在js中,对象是一组无序的相关属性和方法的集合,所有的事物都是对象,例如字符串、数值、数组、函数等

    通俗理解: 对象是一个具体的事物,看的见摸得着的实体

    组成:对象是由 属性 和 方法 组成的

    属性:事物的特征,在对象中用属性来表示(常用名词)
    方法:事物的行为,在对象中用方法来表示是(常用动词)
    方法冒号后面跟的是一个匿名函数
    方法的另一种解释:写在对象里面的函数 就叫做 方法


  • 2.对象的创建方式


  • (1) 利用对象字面量 创建对象 { }

    采取 键值对 的形式 匹配属性   属性名(键) :属性值(值)
    多个属性或者方法中间用 逗号 隔开
    方法冒号后面跟的是一个匿名函数 ★
    调用的时候:对象名.属性名   对象名.方法名()
     

            // var obj = {}; // 创建了一个空的对象
            var obj = {
                uname: '白小雪',
                age: 18,
                sex: '男',
                sayHi: function () {
                    console.log('hi~');
                }
            }
     
            console.log(obj.uname); // 对象名.属性名       
            console.log(obj['age']); // 对象名['属性名']
            obj.sayHi(); // 对象名.方法名()

    3)利用构造函数 创建对象 ★

    构造函数名字 首字母要大写
    构造函数 不需要 return 就可以返回结果
    多个属性和方法之间用 分号 结束
    调用构造函数 必须用 new ★
    我们只要new Star()一下 调用函数就创建一个对象 ldh{}
    属性 和 方法 前面必须添加 this ★  (this 当前这个)

          // 构造函数 语法格式:
             function 构造函数名(){
                 this.属性 = 值;
                 this.方法 = function(){
     
                 }
             }
             new 构造函数名();  // 调用构造函数 必须用 new ★
     
           // 举例
     
            function Star(uname, age, sex) {
                this.name = uname;
                this.age = age;
                this.sex = sex;
                this.sing = function (sang) {
                    console.log(sang);
                }
            }
            var ldh = new Star('刘德华', 18, '男'); // 调用函数 返回的是一个对象
            // console.log(typeof ldh); // object
            console.log(ldh.name);
            console.log(ldh['sex']);
            ldh.sing('冰雨'); //   // 调用对象的方法 对象名.方法名()★
     
            var zxy = new Star('张学友', 21, '男');
            console.log(zxy.name);
            console.log(zxy.age);

    4.new 关键字执行过程


  • new 构造函数 可以在内存中创建一个 空对象
    this 会指向刚刚创建的对象
    执行构造函数里面的代码 给这个空对象添加属性和方法 ★
    返回这个对象


  • 5.遍历对象 for in


  • 遍历对象:利用 for in 遍历对象 (for in 里边的变量 我们习惯写成 k 或者 key)
    作用:for in 语句 用于对数组或者对象的属性进行循环操作
     

           // 语法:
             for(变量 in 对象){
     
             }
          // 举例
            var obj = {
                name: 'pink老师',
                age: 18,
                sex: '男'
            }
     
            for (var k in obj) {
                console.log(k); // k 变量  输出  得到的是 属性名
                console.log(obj[k]); // obj[k]  得到的是 属性值
            }

    6. 内置对象

    定义:js自带的一些对象,供开发者使用,提供了一些常用的功能(属性和方法)

    优点:帮助我们快速开发

    js常用内置对象:Math、Date、Array、String等

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值