作业
作业
可以让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之后,给出的修改意见:
需要完善的地方
-
变量作用域问题:
a
和b
是全局变量,这在函数调用中可能导致意外的问题,建议将它们作为函数的参数传入。result
也是全局变量,建议改为局部变量,由函数返回结果。
-
用户输入的合法性验证:
option
、a
和b
的输入可能不是数字,应该对用户输入进行验证。- 防止用户输入 0 导致除法出错或意外行为。
-
提高代码结构清晰度:
- 使用一个通用的计算函数代替多个分散的函数,减少重复代码。
-
交互友好性:
- 用户退出时,程序应友好提示并结束循环。
-
代码风格一致性:
- 统一使用
const
和let
替代var
。 - 使用
parseFloat
而非parseInt
,以支持小数运算。
- 统一使用
改进点说明
-
封装为函数:
- 整体逻辑封装在
calculator()
函数中,便于维护和扩展。 - 使用
do...while
循环让用户可以多次进行计算,直到选择退出。
- 整体逻辑封装在
-
变量作用域:
- 使用
let
和const
代替var
,避免全局变量污染。 - 每次运算的
a
、b
和result
都是局部变量,防止意外修改。
- 使用
-
用户输入验证:
- 验证选项是否在 [1, 2, 3, 4] 范围内。
- 验证
a
和b
是否为有效数字。 - 防止除以 0 的错误操作。
-
通用性增强:
- 使用一个统一的
switch
结构来处理所有运算逻辑,减少多余的函数定义。
- 使用一个统一的
-
用户体验:
- 在用户输入无效时提供清晰的提示信息。
- 退出时增加友好提示。
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);
}
封装成函数,不是必须的。这里的加减乘除有些简单,可以不写。
对自己要求高一些,代码功能高一点,考虑全面一点!
欢迎交流~
一切顺利!