JavaScript基础(四)

JavaScript基础(四)
冒泡排序
// 准备一个需要进行排序的数组
var arr = [12, 88, 154, 23, 32, 15, 72, 2, 1, 66];

    // 根据分析出的规律进行代码实现
    // - 外层循环控制轮数:length - 1
    for (var i = 0; i < arr.length - 1; i++) {
        // - 内层循环控制每轮比较次数:
        //    - 设置条件时发现只 - i 不够,少了1,再设置一个 - 1 凑数
        for (var j = 0; j < arr.length - i - 1; j++) {
            // 比较当前项和后项的大小
            //  - 索引自动递增,后项的索引一定比当前项大1
            if (arr[j] > arr[j + 1]) {
                // - 交换两个位置的值即可
                var temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
    console.log(arr);

对冒泡排序的改进
    /*
    小问题:
        - 规律中分析的是通用结论,每个数组需要比较length-1轮
        - 实际情况是,某些数组可能不需要这么多轮就可以排序完毕
    改进方式:
        - 希望可以在确定数组排序完毕后,将操作结束(多余的轮数就不执行了,提高效率)
        - 主要的点是:
            - 如何确定排序完毕
                - 实现方式:检测,某一轮中,是否进行了交换操作
                    - 如果某轮没有发生交换操作,说明排序完毕,break结束即可
    改进结果:
        - 达到了减少不必要轮数的目的
        - 执行的轮数比实际交换的轮数多1,因为最后一轮为结果的验证。

    */
    // 准备一个需要进行排序的数组:
    //      这个数组其实只需要1轮就可以排序完毕,但是实际执行5轮
    var arr = [16, 8, 32, 53, 25, 3, 4, 5, 16];

    // 根据分析出的规律进行代码实现
    // - 外层循环控制轮数:length - 1
    for (var i = 0; i < arr.length - 1; i++) {
        // 在某轮代码开始时,声明一个变量保存状态
        var flag = '默认一开始没进行过交换';

        // console.log('执行了一轮操作');
        // - 内层循环控制每轮比较次数:
        for (var j = 0; j < arr.length - i - 1; j++) {
            // 比较当前项和后项的大小
            if (arr[j] > arr[j + 1]) {
                // - 交换两个位置的值即可
                var temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;

                // 如果进入了if,进行了交换操作,修改flag的值
                flag = '不好意思,交换了';
            }
        }
        // 本轮中所有比较都执行完毕后,检测flag的最终状态
        //   - 如果还是默认值,说明没有进行交换,说明排序完毕,应该break结束
        if (flag === '默认一开始没进行过交换') {
            break;
        }

    }
    console.log(arr);
数组的去重操作
    例如:某个数组中具有一些重复的元素,通过操作得到新数组,新数组中的元素不重复。
    var arr = [1, 1, 2, 2, 3, 3, 4, 5];  处理后得到 var result = [1, 2, 3, 4, 5];
    var arr = [1, 1, 2, 2, 3, 12, 22, 22, 2, 3, 3, 4, 6, 5, 7, 2, 11, 3];
    // 1 声明一个用来保存结果的数组,这个数组的最终结果是不能重复的
    var result = [];

    // 2 遍历arr获取元素
    for (var i = 0; i < arr.length; i++) {
        // 希望将arr[i]放入到result中,前提是result中没有这个值
        // 需要检测arr[i]和result中的每个元素的关系
        //    - 注意:需要确保arr[i]和result中每个元素都不相同,而不是某一个不相同

        // - 针对当前arr[i]设置一个变量保存状态
        var flag = '默认没有一样的值';

        // 3 遍历result获取元素
        for (var j = 0; j < result.length; j++) {
            // 4 比较arr[i]和result[j]的关系
            if (arr[i] === result[j]) {
                // 5 如果找到相同的值,修改flag
                flag = '不好意思,找到了相同的值,不能放入了';
                // 找到了某个值相同后,后面的值就没必要检测了,结束即可
                break;
            }
        }
        // 6 当所有值检测完毕后,判断arr[i]是否可以放入
        //   - 如果flag还是默认值,可以放入
        if (flag === '默认没有一样的值') {
            // 7 将arr[i]放入到result中
            result[result.length] = arr[i];
        }
    }
    console.log(result);
函数
    如果希望代码可以重复使用,并且灵活性强,可以使用函数操作(循环就不行了)
    函数就是一个可以重复使用的代码块
    声明方式
        // 函数声明语句

function 函数名 () {
// 函数体
}

// 函数表达式
var 函数名 = function () {
// 函数体
};
函数的调用
函数的代码如果要执行,需要进行调用操作
格式: 函数名();
函数的基本设置方式:
设置一个函数功能的基本步骤:
先实现具体功能
随便设置一个函数体,将代码放入即可
在需要使用功能的地方调用即可
函数的参数:
参数的使用场景:当一个函数中某些值会发生改变时,可以使用参数
形参:函数体小括号中书写的参数
实参:调用的小括号中
用来给形参赋值,赋值后形参带着值进行函数内代码操作
function getSum (n, m) {
var sum = 0;
for (var i = n; i <= m; i++) {
sum += i;
}
console.log(sum);
}

getSum(1, 100);
getSum(200, 300);
getSum(1, 10);
    函数的返回值
        函数的返回值指的是函数的结果。
        在函数中设置 return 值;
        接收方式:通过函数调用表达式进行接收
        function getSum (n, m) {
        var sum = 0;
        for (var i = n; i <= m; i++) {
            sum += i;
        }
        // console.log(sum);

        // 如果希望在函数外获取函数的计算结果,需要使用返回值
        //  - 格式:  return 值;
        return sum;
    }

    // 希望在函数外对本次调用的结果进行其他操作
    // getSum(1, 100);
    // console.log(sum);
    // 函数内的变量无法在函数外操作,出现了报错:
    // Uncaught ReferenceError: sum is not defined 没有sum,没法用

    // 接收返回值的方式:通过函数的 调用表达式。
    console.log( getSum(1, 100) ); // 5050
    var result = getSum(1, 100);
    console.log( result ); // 5050
        函数返回值的默认值:undefined
        return的第二个作用:结束函数执行
            可以单独使用
作用域
    作用域指的是js中标识符(变量名、函数名)的生效范围。
    全局作用域:
        只要不在函数内,都称为全局作用域。
    局部作用域
        任意函数内都称为局部作用域
    全局变量和函数
        全局作用域中声明的变量和函数称为全局变量和全局函数
        访问范围:在任意位置均可访问
    局部变量和函数
        局部作用域中声明的变量和函数称为局部变量和局部函数
        访问范围:只能在当前作用域内部访问(无法被外部作用域访问)
            内部可以访问,内部的内容也可以,内部的内部的。。的内部也可以

原文地址:https://www.cnblogs.com/itxcr/p/11600138.html

时间: 2024-10-13 22:48:06

JavaScript基础(四)的相关文章

JavaScript基础四

1.13 Js中的面向对象 1.13.1 创建对象的几种常用方式 1.使用Object或对象字面量创建对象 2.工厂模式创建对象 3.构造函数模式创建对象 4.原型模式创建对象 1.使用Object或对象字面量创建对象 JS中最基本创建对象的方式: var student = new Object(); student.name = "easy"; student.age = "20"; 这样,一个student对象就创建完毕,拥有2个属性name以及age,分别赋

引用类型 [重温JavaScript基础(四)]

这篇比较水,主要重温把之前一些疑惑的问题做了补充总结 引用类型综述 引用类型的值(即对象)是引用类型的一个实例.在js中,引用类型是一种数据结构,用于将数据和功能组织在一起.这种形式也常被成为类,但这种说法并不妥当.尽管js从技术上讲是一门面向对象的语言,但它不具备传统的面向对象的语言所支持的类和接口等基本结构(es6开始有支持).引用类型有时候也被称为对象定义,因为它们描述的是一类对象所具有的属性和方法 如前所述,对象是某个特定引用类型的实例.新对象是使用new 操作符后跟一个构造函数来创建的

javascript基础学习(四)

javascript之流程控制语句 学习要点: 表达式语句含义 选择语句:if.if...else.switch 循环语句:while.do...while.for.for...in 跳转语句:break.continue 异常处理语句:throw.try...catch...finally 一.表达式语句 表达式语句通常是赋值语句.函数或方法调用语句等. 二.选择语句 if(条件表达式)语句;  if(条件表达式){语句;}else{语句;}   还有就是if...lese的嵌套 switch

JavaScript基础--DOM对象加强篇(十四)

1.document 对象 定义:document对象代表的整个html文档,因此可以去访问到文档中的各个对象(元素)document重要的函数 1.1 write 向文档输出文本或js代码 1.2 writeln 向文档输出文本或者js代码,与write不一样的地方是,writeln是换行输出. 比如: document.write("hello");document.writeln("ok"); hello ok 但是对浏览器来看,输出效果没有区别. 1.3 g

JavaScript(四)--- 对象

什么是对象 JavaScript 中的所有事物都是对象,如:字符串.数值.数组.函数等,每个对象带有属性和方法. 对象的属性:反映该对象某些特定的性质的,如:字符串的长度.图像的长宽等: 对象的方法:能够在对象上执行的动作.例如,表单的"提交"(Submit),时间的"获取"(getYear)等: JavaScript 提供多个内建对象,比如 String.Date.Array 等等,使用对象前先定义,如下使用数组对象: var objectName =new Ar

javascript基础学习(十五)

javascript之cookie 学习要点: cookie介绍 创建与获取cookie cookie的编码 cookie的生存期 cookie的路径 cookie的domain cookie的secure 一.cookie介绍 cookie实际上就是一些信息,这些信息以文件的形式存储在客户端计算机上.在javascript中,cookie主要用来保存状态,或用于识别身份. 二.创建与获取cookie 创建cookie的语法代码如下所示:document.cookie="name=value&q

javascript基础学习(八)

javascript之日期对象 学习要点: 日期对象 将日期对象转换为字符串 将日期对象中的日期和时间转换为字符串 日期对象中的日期 日期对象中的时间 设置日期对象中的日期 设置日期对象中的时间 与毫秒相关的方法 一.日期对象 在javascript中并没有日期型的数据类型,但是提供了一个日期对象可以操作日期和时间. 日期对象的创建: new Date(); 二.将日期对象转换为字符串 将日期对象转换为字符串可以使用以下4种方法: date.toString();//将日期对象转换为字符串时,采

javascript基础学习(二)

javascript的数据类型 学习要点: typeof操作符 五种简单数据类型:Undefined.String.Number.Null.Boolean 引用数据类型:数组和对象 一.typeof操作符 typeof操作符用来检测变量的数据类型,操作符可以操作变量也可以操作字面量. 对变量或值运用typeof操作符得到如下值: undefined----如果变量是Undefined类型: boolean-------如果变量是Boolean类型: number-------如果变量是Numbe

javascript基础语法——词法结构

× 目录 [1]java [2]定义 [3]大小写[4]保留字[5]注释[6]空白[7]分号 前面的话 javascript是一门简单的语言,也是一门复杂的语言.说它简单,是因为学会使用它只需片刻功夫:而说它复杂,是因为要真正掌握它则需要数年时间.实际上,前端工程师很大程度上就是指javascript工程师.前端入门容易精通难,说的是前端,更指的是javascript.本文是javascript基础语法的第一篇——词法结构 与java关系 关于javascript有这样一个说法,java和jav