JavaScript【10】——作业:创建对象、编写函数、简易计算器

作业

可以让chatgpt看看自己代码有没有什么需要修改的地方。

一行行的看,确保正确规范。

1、创建对象

在这里插入图片描述
随便那种方式都可以,只是自己想回顾一下,就使用了三种方式。

		// 创建对象  三种方式
        // 1.字面量创建对象
        var ordinate = {
            color:'red',
            weight:34,
            brand: 'apple',
            type: 'mac',
            showFilm:function(film){
                console.log('正在看'+film);
            },
            listenMusic:function(music){
                console.log('正在听'+music);
            },
            playGame:function(game){
                console.log('正在玩'+game);
            },
            code:function(){
                console.log('正在敲代码');
            }  //不需要逗号
        };

        // 2.new Object()方法创建对象

        var button1 = new Object();
        button1.weight = 25;
        button1.height = 23;
        button1.backgroundColor = 'yellow';
        button1.click = function(){
            console.log('按钮被点击了!');
        };

        // 3.构造函数创建对象
        function Car (weight, color, brand){
            this.weight = weight;
            this.color = color;
            this.brand = brand;
            this.take = function(){
                console.log('正在载人出行!');
            };
            this.lahuo = function(){
                console.log('正在拉货!');
            };
            this.gengtian = function(){
                console.log('正在耕田!');
            };  // 相当于 赋值,还是要加分号
        }

2、编写函数

在这里插入图片描述

		// 实现翻转任意数组
        function reverseArray(arr) {
            var newArr = [];
            for(var i = arr.length-1; i >= 0; i--){
                newArr[newArr.length] = arr[i];
            }
            return newArr;
        }

        console.log(reverseArray([1, 51, 24, 36, 4, 5, 6]));

        // 实现对任意数字数组的排序--考虑冒泡排序  从小到大
        function bubbleSort(arr) {
            for(var i = 0; i < arr.length - 1; i++){
                for(var j = 0; j < arr.length -i -1; j++){
                    if(arr[j] > arr[j + 1]){
                        [arr[j], arr[j+1]] = [arr[j+1], arr[j]];
                    }
                }
            }
            return arr;
        }
        console.log(bubbleSort([3, 0, 4, 1, 8, 9, 2, 6, 5, 3, 7]));

3、做一个简易计算器

在这里插入图片描述

在这里插入图片描述

		var option = prompt("欢迎使用简易计算器:\n 1、加法运算;\n 2、减法运算;\n 3、乘法运算;\n 4、除法运算 \n 5、退出; \n 请输入您的选项:");
        var num = parseInt(option);
        var result;
        if(num != 5){
            var a  = prompt("请输入一个数字:");
            var b = prompt("请输入另一个数字:");
            switch(num){
            case 1:
                add();
                break;
            case 2:
                subtract();
                break;
            case 3:
                multiply();
                break;
            case 4:
                divide();
                break;
            default:
                alert("请输入正确的选项!");
            }
            alert("结果为:" + result);
        }
        else{
            alert("欢迎下次使用!");
        }
        // 加法运算
        function add(){
            result = parseInt(a) + parseInt(b);
        }
        // 减法运算
        function subtract(){
            result = parseInt(a) - parseInt(b);
        }
        // 乘法运算
        function multiply(){
            result = parseInt(a) * parseInt(b);
        }
        // 除法运算
        function divide(){
            result = parseInt(a) / parseInt(b);
        }

问了chatgpt之后,给出的修改意见:

需要完善的地方
  1. 变量作用域问题:
    • ab 是全局变量,这在函数调用中可能导致意外的问题,建议将它们作为函数的参数传入。
    • result 也是全局变量,建议改为局部变量,由函数返回结果。
  2. 用户输入的合法性验证:
    • optionab 的输入可能不是数字,应该对用户输入进行验证。
    • 防止用户输入 0 导致除法出错或意外行为。
  3. 提高代码结构清晰度:
    • 使用一个通用的计算函数代替多个分散的函数,减少重复代码。
  4. 交互友好性:
    • 用户退出时,程序应友好提示并结束循环。
  5. 代码风格一致性:
    • 统一使用 constlet 替代 var
    • 使用 parseFloat 而非 parseInt,以支持小数运算。
改进点说明
  1. 封装为函数:
    • 整体逻辑封装在 calculator() 函数中,便于维护和扩展。
    • 使用 do...while 循环让用户可以多次进行计算,直到选择退出。
  2. 变量作用域:
    • 使用 letconst 代替 var,避免全局变量污染。
    • 每次运算的 abresult 都是局部变量,防止意外修改。
  3. 用户输入验证:
    • 验证选项是否在 [1, 2, 3, 4] 范围内。
    • 验证 ab 是否为有效数字。
    • 防止除以 0 的错误操作。
  4. 通用性增强:
    • 使用一个统一的 switch 结构来处理所有运算逻辑,减少多余的函数定义。
  5. 用户体验:
    • 在用户输入无效时提供清晰的提示信息。
    • 退出时增加友好提示。
		do{
            var option = prompt("欢迎使用简易计算器:\n 1、加法运算;\n 2、减法运算;\n 3、乘法运算;\n 4、除法运算 \n 5、退出; \n 请输入您的选项:");
            var num = parseInt(option);

            if(num == 5){
                alert("欢迎下次使用!");
                break; // 直接退出循环,直接结束
            }
            else{
                var a = prompt("请输入第一个数字:");
                var b = prompt("请输入第二个数字:");

                // 对数字输入是否正确做判断
                if(isNaN(a) || isNaN(b)){
                    alert("输入无效,请输入数字!");
                    continue; // 跳出本次循环,重新输入
                }

                switch(num){
                    case 1:
                        alert("结果为:" + add(a, b));
                        break;
                    case 2:
                        alert("结果为:" + subtract(a, b));
                        break;
                    case 3:
                        alert("结果为:" + multiply(a, b));
                        break;
                    case 4:
                        if(b == 0){
                            alert("除数不能为0!");
                            continue;  // 跳出本次循环,重新输入
                        }
                        alert("结果为:" + divide(a, b));
                        break;                     
                }
            }
        }
        while(true);    // 循环执行,直到输入5退出

        // 加法运算
        function add(a, b){
            return parseInt(a) + parseInt(b);
        }
        // 减法运算
        function subtract(a, b){
            return parseInt(a) - parseInt(b);
        }
        // 乘法运算
        function multiply(a, b){
            return parseInt(a) * parseInt(b);
        }
        // 除法运算
        function divide(a, b){
            return parseInt(a) / parseInt(b);
        }

封装成函数,不是必须的。这里的加减乘除有些简单,可以不写。

对自己要求高一些,代码功能高一点,考虑全面一点!

欢迎交流~
一切顺利!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值