// 冒泡排序
// 一种算法,可以让数据按从小到大或从大到小进行排列显示
// 观察其执行过程,找到规律转化成代码,就是算法
var arr = [5, 4, 3, 2, 1];
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]) {
var temp = arr[j];
arr[j]=arr[j + 1];
arr[j + 1] = temp;
}
}
}
console.log(arr);
// Js函数
// 内容 1 函数概念 2 函数使用 3 函数参数 4 函数返回值
// 5 arguments的使用 6 函数案例 7 函数的两种声明方式
// 函数就是封装了一段可以被重复调用执行的代码块。通过此代码块可以实现大量的代码重复使用
var sum =0;
for (var i = 1; i <= 100; i++) {
sum += i;
}
console.log(sum);
function getSum(num1,num2) {
var sum = 0;
for (var i = num1; i <= num2; i++) {
sum += i;
}
console.log(sum);
}
getSum(1,100);
// // 声明函数和调用函数
// // function 函数名() {
// 函数体
// }
function sayHi() {
console.log('hi~');
}
// function 是函数关键词 全部小写
// 函数是做某件事情,函数名一般是动词
// 不调用函数 函数自己不执行
// 调用函数需加小括号
sayHi();
// 封装就是把一个或者多个功能通过函数的方式封装起来,对外只提供一个简单的函数接口
// 利用函数计算1-100的累加和
function getSum() {
var sum = 0;
for (i = 1; i <= 100; i++) {
sum += i;
}
console.log(sum);
}
getSum();
// 利用函数的参数可以实现函数重复不同代码
// function 函数名(形参1,形参2,...) {
// 在声明括号里的是形参
// }
// 函数名(实参1,实参2,..) 在带调用函数的括号里是实参
// 形参实参执行过程
function cook(aru) {
console.log(aru);
}
cook('酸辣土豆丝');
cook('肘子');
//函数参数可有也可以没有
//参数在函数内部某些值不能固定,可以通过调用函数时传递不同的值进去
// 函数案例
// 1.利用函数求任意两个数的和
function getSum(add1,add2) {
console.log(add1+add2);
}
getSum(200,100);
// 利用函数求任意两个数之间的和
function getSums(num5,num6) {
var sum = 0;
for (i = num5; i <= num6; i++) {
sum += i
}
console.log(sum);
}
getSums(1,100)
// 注意点
// (1)多个参数之间用逗号隔开
// 形参可以看做不用声明的变量
// 形参实参个数不匹配的情况
// 1. 如果形参实参个数一样则正常输出结果
// 如果实参个数多于形参个数 那么取形参的个数
// 如果实参少于形参 那么多出的形参定义为undefined
// 函数返回值 return
// function 函数名() {
// return(返回需要的结果);
// }
// 函数名();
// (1)函数是实现某种功能 ,最终结果需要返回给函数的调用者 函数名()
// 通过 return 实现的
// (2)只要函数遇到return 就把后面的结果 返回给调用者 函数名() = return 后面的结果
// 代码验证
function cook(aru) {
return aru;
}
console.log(cook('玉米'));
function getSum(num1,num2) {
return num1 + num2;
}
console.log(getSum(1,2));
// 用函数 求两个数的最大值
function getMax(num3,num4) {
// if (num3>num4) {
// return num3;
// } else {
// return num4;
// }
return num3 > num4 ? num3:num4;
}
console.log(getMax(3,100));
console.log(getMax(14012,3010));
//利用函数求数组中[5,2,99,101,67,77]的最大值
function getArrMax(arr) {
var max = arr[0];
for (var i = 1; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
return max;
}
var re = getArrMax([5,2,99,101,67,77]);
console.log(re);
tostring 的用法
let a = {}
let b = [1, 2, 3]
let c = '123'
let d = function(){ console.log('fn') }
console.log(a.toString()) // '[object Object]'
console.log(b.toString()) // '1,2,3'
console.log(c.toString()) // '123'
console.log(d.toString()) // 'function(){ console.log('fn') }'
var arr = [5,2,99,101,67,77];
console.log(arr.toString());
// arguments 函数的内置对像 存储了传递的所有实参
// 且arguments 是一个伪数组
// 具有以下特性 1 具有数组的length属性 2 按照索引方式储存的 3 没有pop() push ()
// 利用函数求任意个数最大值
function getMax() {
var max = arguments[0];
for (i = 1; i < arguments.length; i++) {
if (arguments[i] > max) {
max = arguments[i];
}
}
return max;
}
console.log(getMax(1,2,3));
// 利用函数翻转任意数组 revers 翻转
function reverse(arr) {
var newArr = []
for (var i =arr.length - 1; i >= 0; i-- ) {
newArr[newArr.length] = arr[i];
}
return newArr;
}
var arr1 = reverse([1,3,6,9])
console.log(arr1);
// 函数封装冒泡 sort 排序
function sort(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]) {
var temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
return arr;
}
}
var arr1 = sort([1,4,2,9])
console.log(arr1);
// 函数有两种声明方式 利用关键字声明(命名函数)
// 函数表达式(匿名函数)
// var 变量名 = function() {};
var fun = function () {
console.log('函数表达式');
}
fun();
// fun 是变量名 不是函数名
// 函数表达式声明方式跟声明变量差不多,只不过变量里面存的是值 而函数表达式里存的是函数
// 函数表达式也可以进行传递参数