1. 数组
1.1 创建
<!DOCTYPE html
>
<html lang
="en">
<head
>
<meta charset
="UTF-8">
<meta name
="viewport" content
="width=device-width, initial-scale=1.0">
<meta http
-equiv
="X-UA-Compatible" content
="ie=edge">
<title
>Document
</title
>
<script
>
var arr
= new Array();
var arr
= [];
var arr1
= [1, 2, 'pink老师', true];
console
.log(arr1
);
console
.log(arr1
[2]);
console
.log(arr1
[3]);
var arr2
= ['迪丽热巴', '古丽扎娜', '佟丽丫丫'];
console
.log(arr2
[0]);
console
.log(arr2
[1]);
console
.log(arr2
[2]);
console
.log(arr2
[3]);
</script
>
</head
>
<body
>
</body
>
</html
>
1.2 遍历
<script
>
var arr
= ['red', 'green', 'blue'];
for (var i
= 0; i
< 3; i
++) {
console
.log(arr
[i
]);
}
</script
>
长度
<script
>
var arr
= ['关羽', '张飞', '马超', '赵云', '黄忠', '刘备', '姜维', 'pink'];
for (var i
= 0; i
< 7; i
++) {
console
.log(arr
[i
]);
}
console
.log(arr
.length
);
for (var i
= 0; i
< arr
.length
; i
++) {
console
.log(arr
[i
]);
}
</script
>
案例
<script
>
var arr
= [2, 6, 1, 7, 4];
var sum
= 0;
var average
= 0;
for (var i
= 0; i
< arr
.length
; i
++) {
sum
+= arr
[i
];
}
average
= sum
/ arr
.length
;
console
.log(sum
, average
);
</script
>
<script
>
var arr
= [2, 6, 1, 77, 52, 25, 7, 99];
var max
= arr
[0];
for (var i
= 1; i
< arr
.length
; i
++) {
if (arr
[i
] > max
) {
max
= arr
[i
];
}
}
console
.log('该数组里面的最大值是:' + max
);
</script
>
<script
>
var arr
= ['red', 'green', 'blue', 'pink'];
var str
= '';
var sep
= '*';
for (var i
= 0; i
< arr
.length
; i
++) {
str
+= arr
[i
] + sep
;
}
console
.log(str
);
</script
>
2. 新增元素
<script
>
var arr
= ['red', 'green', 'blue'];
console
.log(arr
.length
);
arr
.length
= 5;
console
.log(arr
);
console
.log(arr
[3]);
console
.log(arr
[4]);
var arr1
= ['red', 'green', 'blue'];
arr1
[3] = 'pink';
console
.log(arr1
);
arr1
[4] = 'hotpink';
console
.log(arr1
);
arr1
[0] = 'yellow';
console
.log(arr1
);
arr1
= '有点意思';
console
.log(arr1
);
</script
>
2.1 案例
<script
>
var arr
= [];
for (var i
= 0; i
< 100; i
++) {
arr
[i
] = i
+ 1;
}
console
.log(arr
);
</script
>
2.2 筛选
<script
>
var arr
= [2, 0, 6, 1, 77, 0, 52, 0, 25, 7];
var newArr
= [];
var j
= 0;
for (var i
= 0; i
< arr
.length
; i
++) {
if (arr
[i
] >= 10) {
newArr
[j
] = arr
[i
];
j
++;
}
}
console
.log(newArr
);
var arr
= [2, 0, 6, 1, 77, 0, 52, 0, 25, 7];
var newArr
= [];
for (var i
= 0; i
< arr
.length
; i
++) {
if (arr
[i
] >= 10) {
newArr
[newArr
.length
] = arr
[i
];
}
}
console
.log(newArr
);
</script
>
3. 数组案例
翻转数组
<script
>
var arr
= ['red', 'green', 'blue', 'pink', 'purple', 'hotpink'];
var newArr
= [];
for (var i
= arr
.length
- 1; i
>= 0; i
--) {
newArr
[newArr
.length
] = arr
[i
]
}
console
.log(newArr
);
</script
>
冒泡排序
<script
>
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
++) {
if (arr
[j
] < arr
[j
+ 1]) {
var temp
= arr
[j
];
arr
[j
] = arr
[j
+ 1];
arr
[j
+ 1] = temp
;
}
}
}
console
.log(arr
);
</script
>
4.函数
4.1 概念
<script
>
var sum
= 0;
for (var i
= 1; i
<= 100; i
++) {
sum
+= i
;
}
console
.log(sum
);
var sum
= 0;
for (var i
= 10; i
<= 50; 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);
getSum(10, 50);
getSum(1, 1000);
</script
>
4.2 使用
<script
>
function sayHi() {
console
.log('hi~~');
}
sayHi();
</script
>
4.3 带参数的函数
行参和实参
<script
>
function cook(aru
) {
console
.log(aru
);
}
cook('酸辣土豆丝');
cook('大肘子');
</script
>
例子
<script
>
function getSum(num1
, num2
) {
console
.log(num1
+ num2
);
}
getSum(1, 3);
getSum(3, 8);
function getSums(start
, end
) {
var sum
= 0;
for (var i
= start
; i
<= end
; i
++) {
sum
+= i
;
}
console
.log(sum
);
}
getSums(1, 100);
getSums(1, 10);
</script
>
形参实参个数匹配
<script
>
function getSum(num1
, num2
) {
console
.log(num1
+ num2
);
}
getSum(1, 2);
getSum(1, 2, 3);
getSum(1);
</script
>
4.4 返回值
<script
>
function getResult() {
return 666;
}
getResult();
console
.log(getResult());
function getSum(num1
, num2
) {
return num1
+ num2
;
}
console
.log(getSum(1, 2));
</script
>
案例
<script
>
function getMax(num1
, num2
) {
return num1
> num2
? num1
: num2
;
}
console
.log(getMax(1, 3));
console
.log(getMax(11, 3));
</script
>
<script
>
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([3, 77, 44, 99, 143]);
console
.log(re
);
</script
>
注意事项
<script
>
function getSum(num1
, num2
) {
return num1
+ num2
;
alert('我是不会被执行的哦!')
}
console
.log(getSum(1, 2));
function fn(num1
, num2
) {
return num1
, num2
;
}
console
.log(fn(1, 2));
function getResult(num1
, num2
) {
return [num1
+ num2
, num1
- num2
, num1
* num2
, num1
/ num2
];
}
var re
= getResult(1, 2);
console
.log(re
);
function fun1() {
return 666;
}
console
.log(fun1());
function fun2() {
}
console
.log(fun2());
</script
>
4.5 arguments
<script
>
function fn() {
for (var i
= 0; i
< arguments
.length
; i
++) {
console
.log(arguments
[i
]);
}
}
fn(1, 2, 3);
fn(1, 2, 3, 4, 5);
</script
>
例子
<script
>
function getMax() {
var max
= arguments
[0];
for (var i
= 1; i
< arguments
.length
; i
++) {
if (arguments
[i
] > max
) {
max
= arguments
[i
];
}
}
return max
;
}
console
.log(getMax(1, 2, 3));
console
.log(getMax(1, 2, 3, 4, 5));
console
.log(getMax(11, 2, 34, 444, 5, 100));
</script
>
4.6 函数之间互相调用
<script
>
function fn1() {
console
.log(111);
fn2();
console
.log('fn1');
}
function fn2() {
console
.log(222);
console
.log('fn2');
}
fn1();
</script
>
输出2月份天数案例
<script
>
function backDay() {
var year
= prompt('请您输入年份:');
if (isRunYear(year
)) {
alert('当前年份是闰年2月份有29天');
} else {
alert('当前年份是平年2月份有28天');
}
}
backDay();
function isRunYear(year
) {
var flag
= false;
if (year
% 4 == 0 && year
% 100 != 0 || year
% 400 == 0) {
flag
= true;
}
return flag
;
}
</script
>
4.7 函数两种调用方式
function fn() {
}
fn();
var fun = function(aru
) {
console
.log('我是函数表达式');
console
.log(aru
);
}
fun('pink老师');
</script
>
5. 作用域
5.1 概述
<script
>
var num
= 10;
var num
= 30;
console
.log(num
);
function fn() {
var num
= 20;
console
.log(num
);
}
fn();
</script
>
5.2 变量作用域
变量的作用域: 根据作用域的不同我们变量分为全局变量和局部变量。 从执行效率来看全局变量和局部变量: (1) 全局变量只有浏览器关闭的时候才会销毁,比较占内存资源 (2) 局部变量 当我们程序执行完毕就会销毁, 比较节约内存资源
<script
>
var num
= 10;
console
.log(num
);
function fn() {
console
.log(num
);
}
fn();
function fun(aru
) {
var num1
= 10;
num2
= 20;
}
fun();
</script
>
5.3 没有块级作用域
<script
>
if (3 < 5) {
var num
= 10;
}
console
.log(num
);
</script
>
5.4 作用域链
作用域链 : 内部函数访问外部函数的变量,采取的是链式查找的方式来决定取那个值 这种结构我们称为作用域链 就近原则
<script
>
var num
= 10;
function fn() {
var num
= 20;
function fun() {
console
.log(num
);
}
fun();
}
fn();
</script
>
案例
<script>
// 案例1 : 结果是几?
function f1() {
var num = 123;
function f2() {
var num = 0;
console.log(num); // 站在目标出发,一层一层的往外查找
}
f2();
}
var num = 456;
f1();
// 案例2 :结果是几?
var a = 1;
function fn1() {
var a = 2;
var b = '22';
fn2();
function fn2() {
var a = 3;
fn3();
function fn3() {
var a = 4;
console.log(a); //a的值 ?
console.log(b); //b的值 ?
}
}
}
fn1();
</script>
6. 预解析
6.1 预解析
我们js引擎运行js 分为两步: 预解析 代码执行 (1). 预解析 js引擎会把js 里面所有的 var 还有 function 提升到当前作用域的最前面 (2). 代码执行 按照代码书写的顺序从上往下执行 预解析分为 变量预解析(变量提升) 和 函数预解析(函数提升) (1) 变量提升 就是把所有的变量声明提升到当前的作用域最前面 不提升赋值操作 (2) 函数提升 就是把所有的函数声明提升到当前作用域的最前面 不调用函数
<script>
// 1问
console.log(num);
// 2问
console.log(num); // undefined 坑 1
var num = 10;
// 相当于执行了以下代码
// var num;
// console.log(num);
// num = 10;
// 3问
function fn() {
console.log(11);
}
fn();
// 4问
fun(); // 报错 坑2
var fun = function() {
console.log(22);
}
// 函数表达式 调用必须写在函数表达式的下面
// 相当于执行了以下代码
// var fun;
// fun();
// fun = function() {
// console.log(22);
// }
</script>
6.2 案例
// // 相当于执行了以下操作
// // var num;
// // function fun() {
// // var num;
// // console.log(num);
// // num = 20;
// // }
// // num = 10;
// // fun();
// // 相当于以下代码
// // var num;
// // function fn() {
// // var num;
// // console.log(num);
// // num = 20;
// // console.log(num);
// // }
// // num = 10;
// // fn();
// 相当于以下代码
// var a;
// function f1() {
// var b;
// var a;
// b = 9;
// console.log(a);
// console.log(b);
// a = '123';
// }
// a = 18;
// f1();
// 以下代码
// function f1() {
// var a;
// a = b = c = 9;
// // 相当于 var a = 9; b = 9; c = 9; b 和 c 直接赋值 没有var 声明 当 全局变量看
// // 集体声明 var a = 9, b = 9, c = 9;
// console.log(a);
// console.log(b);
// console.log(c);
// }
// f1();
// console.log(c);
// console.log(b);
// console.log(a);
参考: 代码一 代码二