JavaScript基础
1.1 认识JavaScript
1.2 JavaScript的特点
解释性语言:经过解释器解释的语言
动态型语言:在编写代码的过程中,可以动态
修改属性。静态语言则在编写代码过程中不可以动态修改属性。
1.3 JavaScript编写位置
<! 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>
< style> </ style>
< script>
</ script>
< script src = " my.js" > </ script>
</ head>
< body>
</ body>
</ html>
1.4 JavaScript注释使用
单行注释://
多行注释:/* */
1.5 JS输入输出语句
<! 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>
prompt ( '请输入您的年龄' ) ;
alert ( '计算的结果是' ) ;
console. log ( '我是程序员能看到的' ) ;
</ script>
</ head>
< body>
</ body>
</ html>
1.6 如何定义变量
情况 说明 结果 var age ; console.log (age); 只声明 不赋值 undefined console.log(age) 不声明 不赋值 直接使用 报错 age = 10; console.log (age); 不声明 只赋值 10
可以用var,也可以用let,但是开发中用let,因为代
码块{}没有块级作用域,只起分组的作用,但是用let则
代码块{}则有块级作用域
<! 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 myname = 'pink老师' ;
console. log ( myname) ;
myname = '迪丽热巴' ;
console. log ( myname) ;
var age = 18 ,
address = '火影村' ,
gz = 2000 ;
var sex;
console. log ( sex) ;
qq = 110 ;
console. log ( qq) ;
</ script>
</ head>
< body>
</ body>
</ html>
1.7 基础的数据类型
基础数据类型:Undefined,Boolean,Null,Number,String
引用数据类型:Object
注意:可以使用typeof 变量来检查数据的类型,但是返回
的是相应数据类型的小写形式,但是有例外,就是typeof null 的
数据类型不是null,而是object
注意javaScript不存在char类型,所以单引号跟双引号都
可以表示字符串
变量的数据类型
<! 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 num = 10 ;
var str = 'pink' ;
var x = 10 ;
x = 'pink' ;
</ script>
</ head>
< body>
</ body>
</ html>
数字型Number
<! 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 num = 10 ;
var PI = 3.14
var num1 = 010 ;
console. log ( num1) ;
var num2 = 012 ;
console. log ( num2) ;
var num3 = 0x9 ;
console. log ( num3) ;
var num4 = 0xa ;
console. log ( num4) ;
console. log ( Number. MAX_VALUE ) ;
console. log ( Number. MIN_VALUE ) ;
console. log ( Number. MAX_VALUE * 2 ) ;
console. log ( - Number. MAX_VALUE * 2 ) ;
console. log ( 'pink老师' - 100 ) ;
</ script>
</ head>
< body>
</ body>
</ html>
isNaN
<! 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>
console. log ( isNaN ( 12 ) ) ;
console. log ( isNaN ( 'pink老师' ) ) ;
</ script>
</ head>
< body>
</ body>
</ html>
字符串型String1
<! 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 str = '我是一个"高富帅"的程序员' ;
console. log ( str) ;
var str1 = "我是一个'高富帅'的\n程序员" ;
console. log ( str1) ;
</ script>
</ head>
< body>
</ body>
</ html>
字符串拼接
<! 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 str = 'my name is andy' ;
console. log ( str. length) ;
console. log ( '沙漠' + '骆驼' ) ;
console. log ( 'pink老师' + 18 ) ;
console. log ( 'pink' + true ) ;
console. log ( 12 + 12 ) ;
console. log ( '12' + 12 ) ;
</ script>
</ head>
< body>
</ body>
</ html>
字符串拼接加强
<! 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>
console. log ( 'pink老师' + 18 ) ;
console. log ( 'pink老师' + 18 + '岁' ) ;
var age = 19 ;
console. log ( 'pink老师age岁' ) ;
console. log ( 'pink老师' + age + '岁' ) ;
console. log ( 'pink老师' + age + '岁' ) ;
</ script>
</ head>
< body>
</ body>
</ html>
布尔型Boolean
<! 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 flag = true ;
var flag1 = false ;
console. log ( flag + 1 ) ;
console. log ( flag1 + 1 ) ;
var str;
console. log ( str) ;
var variable = undefined ;
console. log ( variable + 'pink' ) ;
console. log ( variable + 1 ) ;
var space = null ;
console. log ( space + 'pink' ) ;
console. log ( space + 1 ) ;
</ script>
</ head>
< body>
</ body>
</ html>
获取变量数据类型
<! 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 num = 10 ;
console. log ( typeof num) ;
var str = 'pink' ;
console. log ( typeof str) ;
var flag = true ;
console. log ( typeof flag) ;
var vari = undefined ;
console. log ( typeof vari) ;
var timer = null ;
console. log ( typeof timer) ;
var age = prompt ( '请输入您的年龄' ) ;
console. log ( age) ;
console. log ( typeof age) ;
</ script>
</ head>
< body>
</ body>
</ html>
字面量
<! 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>
console. log ( 18 ) ;
console. log ( '18' ) ;
console. log ( true ) ;
console. log ( undefined ) ;
console. log ( null ) ;
</ script>
</ head>
< body>
</ body>
</ html>
1.7.1 数据类型转换
1.7.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 num = 10 ;
var str = num. toString ( ) ;
console. log ( str) ;
console. log ( typeof str) ;
console. log ( String ( num) ) ;
console. log ( num + '' ) ;
</ script>
</ head>
< body>
</ body>
</ html>
1.7.1.2 转换为数字型
<! 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>
console. log ( parseInt ( '3.14' ) ) ;
console. log ( parseInt ( '3.94' ) ) ;
console. log ( parseInt ( '120px' ) ) ;
console. log ( parseInt ( 'rem120px' ) ) ;
console. log ( parseFloat ( '3.14' ) ) ;
console. log ( parseFloat ( '120px' ) ) ;
console. log ( parseFloat ( 'rem120px' ) ) ;
var str = '123' ;
console. log ( Number ( str) ) ;
console. log ( Number ( '12' ) ) ;
console. log ( '12' - 0 ) ;
console. log ( '123' - '120' ) ;
console. log ( '123' * 1 ) ;
</ script>
</ head>
< body>
</ body>
</ html>
计算年龄案例
<! 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 year = prompt ( '请您输入您的出生年份' ) ;
var age = 2018 - year;
alert ( '您今年已经' + age + '岁了' ) ;
</ script>
</ head>
< body>
</ body>
</ html>
简单加法器案例
<! 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 num1 = prompt ( '请您输入第一个值:' ) ;
var num2 = prompt ( '请您输入第二个值:' ) ;
var result = parseFloat ( num1) + parseFloat ( num2) ;
alert ( '您的结果是:' + result) ;
</ script>
</ head>
< body>
</ body>
</ html>
1.7.1.3 转换为布尔型
代表空、否定的值会被转换为 false ,
如 ''、0、NaN、null、undefined
其余值都会被转换为 true
console.log(Boolean('')); // false
console.log(Boolean(0)); // false
console.log(Boolean(NaN)); // false
console.log(Boolean(null)); // false
console.log(Boolean(undefined)); // false
console.log(Boolean('小白')); // true
console.log(Boolean(12)); // true
<! 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>
console. log ( Boolean ( '' ) ) ;
console. log ( Boolean ( 0 ) ) ;
console. log ( Boolean ( NaN ) ) ;
console. log ( Boolean ( null ) ) ;
console. log ( Boolean ( undefined ) ) ;
console. log ( '------------------------------' ) ;
console. log ( Boolean ( '123' ) ) ;
console. log ( Boolean ( '你好吗' ) ) ;
console. log ( Boolean ( '我很好' ) ) ;
</ script>
</ head>
< body>
</ body>
</ html>
1.8 运算符
基本跟java语法一样.
注意:如果比较相不相等是,用===或者!==来表示,不
要用==或者!=来表示,因为==或者!=会自动进行类型
转换,类型不相同时,但是文本值相同,则会变成true
1.8.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>
console. log ( 1 + 1 ) ;
console. log ( 1 - 1 ) ;
console. log ( 1 * 1 ) ;
console. log ( 1 / 1 ) ;
console. log ( 4 % 2 ) ;
console. log ( 5 % 3 ) ;
console. log ( 3 % 5 ) ;
console. log ( 0.1 + 0.2 ) ;
console. log ( 0.07 * 100 ) ;
var num = 0.1 + 0.2 ;
console. log ( num == 0.3 ) ;
</ script>
</ head>
< body>
</ body>
</ html>
1.8.2 比较运算符
概念:比较运算符(关系运算符)是两个数据进行比
较时所使用的运算符,比较运算后,会返回一个布尔
值(true / false)作为比较运算的结果。
<! 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>
console. log ( 3 >= 5 ) ;
console. log ( 2 <= 4 ) ;
console. log ( 3 == 5 ) ;
console. log ( 'pink老师' == '刘德华' ) ;
console. log ( 18 == 18 ) ;
console. log ( 18 == '18' ) ;
console. log ( 18 != 18 ) ;
console. log ( 18 === 18 ) ;
console. log ( 18 === '18' ) ;
</ script>
</ head>
< body>
</ body>
</ html>
1.8.3 逻辑运算符
逻辑与&& 两边都是 true才返回 true,否则返回 false
逻辑或 || 两边都为 false 才返回 false,否则都为true
逻辑非 ! 逻辑非(!)也叫作取反符,用来取一个布
尔值相反的值,如 true 的相反值是 false
逻辑运算符
<! 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>
console. log ( 3 > 5 && 3 > 2 ) ;
console. log ( 3 < 5 && 3 > 2 ) ;
console. log ( 3 > 5 || 3 > 2 ) ;
console. log ( 3 > 5 || 3 < 2 ) ;
console. log ( ! true ) ;
</ script>
</ head>
< body>
</ body>
</ html>
短路运算(逻辑中断)
<! 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>
console. log ( 123 && 456 ) ;
console. log ( 0 && 456 ) ;
console. log ( 0 && 1 + 2 && 456 * 56789 ) ;
console. log ( '' && 1 + 2 && 456 * 56789 ) ;
console. log ( 123 || 456 ) ;
console. log ( 123 || 456 || 456 + 123 ) ;
console. log ( 0 || 456 || 456 + 123 ) ;
var num = 0 ;
console. log ( 123 || num++ ) ;
console. log ( num) ;
</ script>
</ head>
< body>
</ body>
</ html>
1.8.4 赋值运算符
<! 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 num = 10 ;
num += 5 ;
console. log ( num) ;
var age = 2 ;
age *= 3 ;
console. log ( age) ;
</ script>
</ head>
< body>
</ body>
</ html>
1.8.5 运算符优先级
<! 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>
console. log ( 4 >= 6 || '人' != '阿凡达' && ! ( 12 * 2 == 144 ) && true )
var num = 10 ;
console. log ( 5 == num / 2 && ( 2 + 2 * num) . toString ( ) === '22' ) ;
console. log ( '-------------------' ) ;
var a = 3 > 5 && 2 < 7 && 3 == 4 ;
console. log ( a) ;
var b = 3 <= 4 || 3 > 1 || 3 != 2 ;
console. log ( b) ;
var c = 2 === "2" ;
console. log ( c) ;
var d = ! c || b && a;
console. log ( d) ;
</ script>
</ head>
< body>
</ body>
</ html>
1.9 流程控制
if 语句
// 条件成立执行代码,否则什么也不做
if (条件表达式) {
// 条件成立执行的代码语句
}
if else语句
// 条件成立 执行 if 里面代码,否则执行else 里面的代码
if (条件表达式) {
// [如果] 条件成立执行的代码
} else {
// [否则] 执行的代码
}
if else if 语句
// 适合于检查多重条件。
if (条件表达式1) {
语句1;
} else if (条件表达式2) {
语句2;
} else if (条件表达式3) {
语句3;
....
} else {
// 上述条件都不成立执行此处代码
}
三元表达式
表达式1 ? 表达式2 : 表达式3;
switch 语句
switch( 表达式 ){
case value1:
// 表达式 等于 value1 时要执行的代码
break;
case value2:
// 表达式 等于 value2 时要执行的代码
break;
default:
// 表达式 不等于任何一个 value 时要执行的代码
}
if分支语句
<! 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>
if ( 3 < 5 ) {
alert ( '沙漠骆驼' ) ;
}
</ script>
</ head>
< body>
</ body>
</ html>
if else双分支语句
<! 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 age = prompt ( '请输入您的年龄:' ) ;
if ( age >= 18 ) {
alert ( '我想带你去网吧偷耳机' ) ;
} else {
alert ( '滚, 回家做作业去' ) ;
}
</ script>
</ head>
< body>
</ body>
</ html>
if else if多分支语句
<! 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>
if ( 条件表达式1 ) {
} else if ( 条件表达式2 ) {
} else if ( 条件表达式3 ) {
} else {
}
</ script>
</ head>
< body>
</ body>
</ html>
三元表达式
<! 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 num = 10 ;
var result = num > 5 ? '是的' : '不是的' ;
console. log ( result) ;
</ script>
</ head>
< body>
</ body>
</ html>
switch分支语句
<! 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>
switch ( 8 ) {
case 1 :
console. log ( '这是1' ) ;
break ;
case 2 :
console. log ( '这是2' ) ;
break ;
case 3 :
console. log ( '这是3' ) ;
break ;
default :
console. log ( '没有匹配结果' ) ;
}
</ script>
</ head>
< body>
</ body>
</ html>
switch注意事项
<! 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 num = 1 ;
switch ( num) {
case 1 :
console. log ( 1 ) ;
case 2 :
console. log ( 2 ) ;
case 3 :
console. log ( 3 ) ;
break ;
}
</ script>
</ head>
< body>
</ body>
</ html>
1.10 循环
for循环
for(初始化变量; 条件表达式; 操作表达式 ){
//循环体
}
while循环
while (条件表达式) {
}
do-while循环
do {
// 循环体代码 - 条件表达式为 true 时重复执行循环体代码
} while(条件表达式);
continue、break
continue 关键字用于立即跳出本次循环,继续下一次
循环(本次循环体中 continue 之后的代码就会少执行一次)。
break 关键字用于立即跳出整个循环(循环结束)
for循环
<! 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>
for ( var i = 1 ; i <= 100 ; i++ ) {
console. log ( '你好吗' ) ;
}
</ script>
</ head>
< body>
</ body>
</ html>
while循环
<! 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 num = 1 ;
while ( num <= 100 ) {
console. log ( '好啊有' ) ;
num++ ;
}
</ script>
</ head>
< body>
</ body>
</ html>
do whild循环
<! 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>
do {
} while ( 条件表达式)
var i = 1 ;
do {
console. log ( 'how are you?' ) ;
i++ ;
} while ( i <= 100 )
</ script>
</ head>
< body>
</ body>
</ html>
continue
<! 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>
for ( var i = 1 ; i <= 5 ; i++ ) {
if ( i == 3 ) {
continue ;
}
console. log ( '我正在吃第' + i + '个包子' ) ;
}
var sum = 0 ;
for ( var i = 1 ; i <= 100 ; i++ ) {
if ( i % 7 == 0 ) {
continue ;
}
sum += i;
}
console. log ( sum) ;
</ script>
</ head>
< body>
</ body>
</ html>
break
<! 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>
for ( var i = 1 ; i <= 5 ; i++ ) {
if ( i == 3 ) {
break ;
}
console. log ( '我正在吃第' + i + '个包子' ) ;
}
</ script>
</ head>
< body>
</ body>
</ html>
2.1 数组
数组的创建方式
利用 new 创建数组
var 数组名 = new Array() ;
利用数组字面量创建数组
var 数组名 = [];
获取数组中的元素
// 定义数组
var arrStus = [1,2,3];
// 获取数组中的第2个元素
alert(arrStus[1]);
遍历数组
var arr = ['red','green', 'blue'];
for(var i = 0; i < arr.length; i++){
console.log(arrStus[i]);
}
数组的长度
数组名.length
新增元素
通过修改 length 长度新增数组元素
var arr = ['red', 'green', 'blue', 'pink'];
arr.length = 7;
console.log(arr);
console.log(arr[4]);
console.log(arr[5]);
console.log(arr[6]);
通过修改数组索引新增数组元素
不能直接给数组名赋值,否则会覆盖掉以前的数据
var arr = ['red', 'green', 'blue', 'pink'];
arr[4] = 'hotpink';
console.log(arr);
数组的使用
<! 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>
遍历数组
<! 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 = [ 'red' , 'green' , 'blue' ] ;
for ( var i = 0 ; i < 3 ; i++ ) {
console. log ( arr[ i] ) ;
}
</ script>
</ head>
< body>
</ body>
</ html>
数组长度
<! 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 = [ '关羽' , '张飞' , '马超' , '赵云' , '黄忠' , '刘备' , '姜维' , '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>
</ head>
< body>
</ body>
</ html>
新增数组元素
<! 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 = [ '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>
</ head>
< body>
</ body>
</ html>
2.2 函数
声明函数
// 声明函数
function 函数名() {
//函数体代码
}
调用函数
// 调用函数
函数名(); // 通过调用函数名来执行函数体代码
函数参数
function sum(num1, num2) {
console.log(num1 + num2);
}
sum(100, 200); // 形参和实参个数相等,输出正确结果
sum(100, 400, 500, 700); // 实参个数多于形参,只取到形参的个数
sum(200); // 实参个数少于形参,多的形参定义为undefined,结果为NaN
返回值
在使用 return 语句时,函数会停止执行,并返回指定的值
如果函数没有 return ,返回的值是 undefined
arguments的使用
当我们不确定有多少个参数传递的时候,可以用 arguments 来获取
arguments展示形式是一个伪数组,因此可以进行遍历。伪数组具有以下特点:
具有 length 属性
按索引方式储存数据
不具有数组的 push , pop 等方法
函数的两种声明方式
利用函数关键字 function 自定义函数方式。
// 声明定义方式
function fn() {...}
// 调用
fn();
函数表达式方式(匿名函数)
// 这是函数表达式写法,匿名函数后面跟分号结束
var fn = function(){...};
// 调用的方式,函数调用必须写到函数体下面
fn();
全局变量
在全局作用域下声明的变量叫做全局变量(在函数外部定义的变量)。
全局变量在代码的任何位置都可以使用
在全局作用域下 var 声明的变量 是全局变量
特殊情况下,在函数内不使用 var 声明的变量也是全局变量(不建议使用)
局部变量
在局部作用域下声明的变量叫做局部变量(在函数内部定义的变量)
局部变量只能在该函数内部使用
在函数内部 var 声明的变量是局部变量
函数的形参实际上就是局部变量
<! 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>
function sayHi ( ) {
console. log ( 'hi~~' ) ;
}
sayHi ( ) ;
</ script>
</ head>
< body>
</ body>
</ html>
带参数的函数
<! 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>
function cook ( aru ) {
console. log ( aru) ;
}
cook ( '酸辣土豆丝' ) ;
cook ( '大肘子' ) ;
</ script>
</ head>
< body>
</ body>
</ html>
函数形参实参个数匹配
<! 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>
function getSum ( num1, num2 ) {
console. log ( num1 + num2) ;
}
getSum ( 1 , 2 ) ;
getSum ( 1 , 2 , 3 ) ;
getSum ( 1 ) ;
</ script>
</ head>
< body>
</ body>
</ html>
函数的返回值
<! 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>
function getResult ( ) {
return 666 ;
}
getResult ( ) ;
console. log ( getResult ( ) ) ;
function getSum ( num1, num2 ) {
return num1 + num2;
}
console. log ( getSum ( 1 , 2 ) ) ;
</ script>
</ head>
< body>
</ body>
</ html>
函数返回值注意事项
<! 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>
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>
</ head>
< body>
</ body>
</ html>
arguments使用
<! 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>
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>
</ head>
< body>
</ body>
</ html>
2.3 for的例外
基本跟java语言差不多,但是for例外:
< script>
let a = [ "ni" , "hao" , "ma" ] ;
for ( let i in a) {
alert ( i) ;
alert ( a[ i] ) ;
}
let a2 = { name: "xiaoming" , age: 18 }
for ( let i in a2) {
alert ( i) ; 这里将输出属性名
alert ( a2[ i] ) ;
}
</ script>
函数的两种声明方式
<! 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>
function fn ( ) {
}
fn ( ) ;
var fun = function ( aru ) {
console. log ( '我是函数表达式' ) ;
console. log ( aru) ;
}
fun ( 'pink老师' ) ;
</ script>
</ head>
< body>
</ body>
</ html>
2.4 作用域
全局作用域
作用于所有代码执行的环境(整个 script 标签内部)或者一个独立
的 js 文件。
局部作用域
作用于函数内的代码环境,就是局部作用域。 因为跟函数有关系,
所以也称为函数作用域。
JS 没有块级作用域
Js中没有块级作用域(在ES6之前)。
JavaScript作用域
<! 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 num = 10 ;
var num = 30 ;
console. log ( num) ;
function fn ( ) {
var num = 20 ;
console. log ( num) ;
}
fn ( ) ;
</ script>
</ head>
< body>
</ body>
</ html>
变量的作用域
<! 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 num = 10 ;
console. log ( num) ;
function fn ( ) {
console. log ( num) ;
}
fn ( ) ;
function fun ( aru ) {
var num1 = 10 ;
num2 = 20 ;
}
fun ( ) ;
</ script>
</ head>
< body>
</ body>
</ html>
JavaScript没有块级作用域
<! 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>
if ( 3 < 5 ) {
var num = 10 ;
}
console. log ( num) ;
</ script>
</ head>
< body>
</ body>
</ html>
2.5 函数作用链
只要是代码,就至少有一个作用域
写在函数内部的局部作用域
如果函数中还有函数,那么在这个作用域中就又可以诞生一个作用域
根据在内部函数可以访问外部函数变量的这种机制,用链式查
找决定哪些数据能被内部函数访问,就称作作用域链
<! 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 num = 10 ;
function fn ( ) {
var num = 20 ;
function fun ( ) {
console. log ( num) ;
}
fun ( ) ;
}
fn ( ) ;
</ script>
</ head>
< body>
</ body>
</ html>
2.6 函数预解析
预解析:在当前作用域下, JS 代码执行之前,浏览器会默认把
带有 var 和 function 声明的变量在内存中进行提前声明或
者定义。
代码执行: 从上到下执行JS语句。
<! 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>
console. log ( num) ;
console. log ( num) ;
var num = 10 ;
function fn ( ) {
console. log ( 11 ) ;
}
fn ( ) ;
fun ( ) ;
var fun = function ( ) {
console. log ( 22 ) ;
}
</ script>
</ head>
< body>
</ body>
</ html>
2.7 对象
1.内建对象
由ES标准中定义的对象,在任何的ES的实现中都可以使用
比如: Math String Number Boolean Function Object
2.宿主对象
由JS的运行环境提供的对象,目前来讲主要指由浏览器提供的对象
比如 BOM DOM
3.自定义对象
由开发人员自己创建的对象
2.7.1 如何创造对象
第一种
var obj = {
"name":"张三疯",
"sex":"男",
"age":128,
"height":154
}
第二种
var andy = new Obect();
andy.name = 'pink';
andy.age = 18;
andy.sex = '男';
andy.sayHi = function(){
alert('大家好啊~');
}
第三种 利用构造函数创建对象
<!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>
// 利用构造函数创建对象
// 我们需要创建四大天王的对象 相同的属性: 名字 年龄 性别 相同的方法: 唱歌
// 构造函数的语法格式
// function 构造函数名() {
// this.属性 = 值;
// this.方法 = function() {}
// }
// new 构造函数名();
function Star(uname, age, sex) {
this.name = uname;
this.age = age;
this.sex = sex;
this.sing = function(sang) {
console.log(sang);
}
}
var ldh = new Star('刘德华', 18, '男'); // 调用函数返回的是一个对象
// console.log(typeof ldh);
console.log(ldh.name);
console.log(ldh['sex']);
ldh.sing('冰雨');
var zxy = new Star('张学友', 19, '男');
console.log(zxy.name);
console.log(zxy.age);
zxy.sing('李香兰')
// 1. 构造函数名字首字母要大写
// 2. 我们构造函数不需要return 就可以返回结果
// 3. 我们调用构造函数 必须使用 new
// 4. 我们只要new Star() 调用函数就创建一个对象 ldh {}
// 5. 我们的属性和方法前面必须添加 this
</script>
</head>
<body>
</body>
</html>
利用对象字面量创建对象
<! 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 obj = {
uname: '张三疯' ,
age: 18 ,
sex: '男' ,
sayHi : function ( ) {
console. log ( 'hi~' ) ;
}
}
console. log ( obj. uname) ;
console. log ( obj[ 'age' ] ) ;
obj. sayHi ( ) ;
</ script>
</ head>
< body>
</ body>
</ html>
变量属性函数方法区别
<! 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 num = 10 ;
var obj = {
age: 18 ,
fn : function ( ) {
}
}
function fn ( ) {
}
console. log ( obj. age) ;
</ script>
</ head>
< body>
</ body>
</ html>
利用new Object创建对象
<! 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 obj = new Object ( ) ;
obj. uname = '张三疯' ;
obj. age = 18 ;
obj. sex = '男' ;
obj. sayHi = function ( ) {
console. log ( 'hi~' ) ;
}
console. log ( obj. uname) ;
console. log ( obj[ 'sex' ] ) ;
obj. sayHi ( ) ;
</ script>
</ head>
< body>
</ body>
</ html>
利用构造函数创建对象
<! 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>
function Star ( uname, age, sex ) {
this . name = uname;
this . age = age;
this . sex = sex;
this . sing = function ( sang ) {
console. log ( sang) ;
}
}
var ldh = new Star ( '刘德华' , 18 , '男' ) ;
console. log ( ldh. name) ;
console. log ( ldh[ 'sex' ] ) ;
ldh. sing ( '冰雨' ) ;
var zxy = new Star ( '张学友' , 19 , '男' ) ;
console. log ( zxy. name) ;
console. log ( zxy. age) ;
zxy. sing ( '李香兰' )
</ script>
</ head>
< body>
</ body>
</ html>
构造函数和对象
<! 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>
function Star ( uname, age, sex ) {
this . name = uname;
this . age = age;
this . sex = sex;
this . sing = function ( sang ) {
console. log ( sang) ;
}
}
var ldh = new Star ( '刘德华' , 18 , '男' ) ;
console. log ( ldh) ;
</ script>
</ head>
< body>
</ body>
</ html>
2.7.2 new关键字的作用
1. 在构造函数代码开始执行之前,创建一个空对象;
2. 修改this的指向,把this指向创建出来的空对象;
3. 执行函数的代码
4. 在函数完成之后,返回this---即创建出来的对象
<! 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>
function Star ( uname, age, sex ) {
this . name = uname;
this . age = age;
this . sex = sex;
this . sing = function ( sang ) {
console. log ( sang) ;
}
}
var ldh = new Star ( '刘德华' , 18 , '男' ) ;
</ script>
</ head>
< body>
</ body>
</ html>
2.7.3 对象的操作
遍历对象的属性
for (var k in obj) {
console.log(k); // 这里的 k 是属性名
console.log(obj[k]); // 这里的 obj[k] 是属性值
}
增加属性
obj.name = "xiaoming"
删除属性
delete obj.name;
查属性
console.log(obj.name);
改属性
obj.name = 'xiaohong';
如何判断对象是否包含某个属性
console.log(‘name’ in obj);
修改样式
元素.style.样式名 = 样式值
遍历对象
<! 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 obj = {
name: 'pink老师' ,
age: 18 ,
sex: '男' ,
fn : function ( ) { }
}
for ( var k in obj) {
console. log ( k) ;
console. log ( obj[ k] ) ;
}
</ script>
</ head>
< body>
</ body>
</ html>
2.7.4 JavaScript 内置对象
Math 对象
Math 对象不是构造函数,它具有数学常数和函数的属性和方法。跟
数学相关的运算(求绝对值,取整、最大值
等)可以使用 Math 中的成员。
Math.PI // 圆周率
Math.floor() // 向下取整
Math.ceil() // 向上取整
Math.round() // 四舍五入版 就近取整 注意 -3.5 结果是 -3
Math.abs() // 绝对值
Math.max()/Math.min() // 求最大和最小值
Math.random() //random() 方法可以随机返回一个小数,其取值范围是 [0,1),左闭右开 0 <= x < 1
Date对象
Date 对象和 Math 对象不一样,他是一个构造函数,所以我们需要实例化后才能使用
// 1. 使用Date 如果没有参数 返回当前系统的当前时间
var date = new Date();
// 2. 参数常用的写法 数字型 2019, 10, 01 或者是 字符串型 '2019-10-1 8:8:8'
var date1 = new Date(2019, 10, 1);
var date2 = new Date('2019-10-1 8:8:8');
获取日期的总的毫秒形式
// 实例化Date对象
var now = new Date();
// 1. 用于获取对象的原始值
console.log(date.valueOf())
console.log(date.getTime())
// 2. 简单写可以这么做
var now = + new Date();
// 3. HTML5中提供的方法,有兼容性问题
var now = Date.now();
数组对象
字面量方式
new Array()
检测是否为数组
instanceof 运算符,可以判断一个对象是否属于某种类型
Array.isArray()用于判断一个对象是否为数组,isArray() 是 HTML5 中提供的方法
var arr = [1, 23];
var obj = {};
console.log(arr instanceof Array); // true
console.log(obj instanceof Array); // false
console.log(Array.isArray(arr)); // true
console.log(Array.isArray(obj)); // false
字符串对象
基本包装类型
为了方便操作基本数据类型,JavaScript 还提供了三个特殊的引用类型:String、Number和 Boolean
var str = 'andy';
console.log(str.length);
这是因为 js 会把基本数据类型包装为复杂数据类型,其执行过程如下 :
// 1. 生成临时变量,把简单类型包装为复杂数据类型
var temp = new String('andy');
// 2. 赋值给我们声明的字符变量
str = temp;
// 3. 销毁临时变量
temp = null;
Math对象最大值
<! 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>
console. log ( Math. PI ) ;
console. log ( Math. max ( 1 , 99 , 3 ) ) ;
console. log ( Math. max ( - 1 , - 10 ) ) ;
console. log ( Math. max ( 1 , 99 , 'pink老师' ) ) ;
console. log ( Math. max ( ) ) ;
</ script>
</ head>
< body>
</ body>
</ html>
Math绝对值和三个取整方法
<! 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>
console. log ( Math. abs ( 1 ) ) ;
console. log ( Math. abs ( - 1 ) ) ;
console. log ( Math. abs ( '-1' ) ) ;
console. log ( Math. abs ( 'pink' ) ) ;
console. log ( Math. floor ( 1.1 ) ) ;
console. log ( Math. floor ( 1.9 ) ) ;
console. log ( Math. ceil ( 1.1 ) ) ;
console. log ( Math. ceil ( 1.9 ) ) ;
console. log ( Math. round ( 1.1 ) ) ;
console. log ( Math. round ( 1.5 ) ) ;
console. log ( Math. round ( 1.9 ) ) ;
console. log ( Math. round ( - 1.1 ) ) ;
console. log ( Math. round ( - 1.5 ) ) ;
</ script>
</ head>
< body>
</ body>
</ html>
Math对象随机数方法
<! 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>
console. log ( Math. random ( ) ) ;
function getRandom ( min, max ) {
return Math. floor ( Math. random ( ) * ( max - min + 1 ) ) + min;
}
console. log ( getRandom ( 1 , 10 ) ) ;
var arr = [ '张三' , '张三丰' , '张三疯子' , '李四' , '李思思' , 'pink老师' ] ;
console. log ( arr[ getRandom ( 0 , arr. length - 1 ) ] ) ;
</ script>
</ head>
< body>
</ body>
</ html>
Date日期对象
<! 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 obj = new Object ( ) ;
var date = new Date ( ) ;
console. log ( date) ;
var date1 = new Date ( 2019 , 10 , 1 ) ;
console. log ( date1) ;
var date2 = new Date ( '2019-10-1 8:8:8' ) ;
console. log ( date2) ;
</ script>
</ head>
< body>
</ body>
</ html>
2.7.5 日期格式化
Date日期对象
<! 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 obj = new Object ( ) ;
var date = new Date ( ) ;
console. log ( date) ;
var date1 = new Date ( 2019 , 10 , 1 ) ;
console. log ( date1) ;
var date2 = new Date ( '2019-10-1 8:8:8' ) ;
console. log ( date2) ;
</ script>
</ head>
< body>
</ body>
</ html>
格式化日期年月日
<! 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 date = new Date ( ) ;
console. log ( date. getFullYear ( ) ) ;
console. log ( date. getMonth ( ) + 1 ) ;
console. log ( date. getDate ( ) ) ;
console. log ( date. getDay ( ) ) ;
var year = date. getFullYear ( ) ;
var month = date. getMonth ( ) + 1 ;
var dates = date. getDate ( ) ;
var arr = [ '星期日' , '星期一' , '星期二' , '星期三' , '星期四' , '星期五' , '星期六' ] ;
var day = date. getDay ( ) ;
console. log ( '今天是:' + year + '年' + month + '月' + dates + '日 ' + arr[ day] ) ;
</ script>
</ head>
< body>
</ body>
</ html>
格式化日期时分秒
<! 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 date = new Date ( ) ;
console. log ( date. getHours ( ) ) ;
console. log ( date. getMinutes ( ) ) ;
console. log ( date. getSeconds ( ) ) ;
function getTimer ( ) {
var time = new Date ( ) ;
var h = time. getHours ( ) ;
h = h < 10 ? '0' + h : h;
var m = time. getMinutes ( ) ;
m = m < 10 ? '0' + m : m;
var s = time. getSeconds ( ) ;
s = s < 10 ? '0' + s : s;
return h + ':' + m + ':' + s;
}
console. log ( getTimer ( ) ) ;
</ script>
</ head>
< body>
</ body>
</ html>
获得Date总的毫秒数
<! 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 date = new Date ( ) ;
console. log ( date. valueOf ( ) ) ;
console. log ( date. getTime ( ) ) ;
var date1 = + new Date ( ) ;
console. log ( date1) ;
console. log ( Date. now ( ) ) ;
</ script>
</ head>
< body>
</ body>
</ html>
倒计时效果
<! 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>
function countDown ( time ) {
var nowTime = + new Date ( ) ;
var inputTime = + new Date ( time) ;
var times = ( inputTime - nowTime) / 1000 ;
var d = parseInt ( times / 60 / 60 / 24 ) ;
d = d < 10 ? '0' + d : d;
var h = parseInt ( times / 60 / 60 % 24 ) ;
h = h < 10 ? '0' + h : h;
var m = parseInt ( times / 60 % 60 ) ;
m = m < 10 ? '0' + m : m;
var s = parseInt ( times % 60 ) ;
s = s < 10 ? '0' + s : s;
return d + '天' + h + '时' + m + '分' + s + '秒' ;
}
console. log ( countDown ( '2019-5-1 18:00:00' ) ) ;
var date = new Date ( ) ;
console. log ( date) ;
</ script>
</ head>
< body>
</ body>
</ html>
2.7.6 数组
创建数组的两种方式
<! 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 = [ 1 , 2 , 3 ] ;
console. log ( arr[ 0 ] ) ;
var arr1 = new Array ( 2 , 3 ) ;
console. log ( arr1) ;
</ script>
</ head>
< body>
</ body>
</ html>
检测是否为数组方法
<! 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>
function reverse ( arr ) {
if ( Array. isArray ( arr) ) {
var newArr = [ ] ;
for ( var i = arr. length - 1 ; i >= 0 ; i-- ) {
newArr[ newArr. length] = arr[ i] ;
}
return newArr;
} else {
return 'error 这个参数要求必须是数组格式 [1,2,3]'
}
}
console. log ( reverse ( [ 1 , 2 , 3 ] ) ) ;
console. log ( reverse ( 1 , 2 , 3 ) ) ;
var arr = [ ] ;
var obj = { } ;
console. log ( arr instanceof Array ) ;
console. log ( obj instanceof Array ) ;
console. log ( Array. isArray ( arr) ) ;
console. log ( Array. isArray ( obj) ) ;
</ script>
</ head>
< body>
</ body>
</ html>
2.7.6.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 = [ 1 , 2 , 3 ] ;
console. log ( arr. push ( 4 , 'pink' ) ) ;
console. log ( arr) ;
console. log ( arr. unshift ( 'red' , 'purple' ) ) ;
console. log ( arr) ;
console. log ( arr. pop ( ) ) ;
console. log ( arr) ;
console. log ( arr. shift ( ) ) ;
console. log ( arr) ;
</ script>
</ head>
< body>
</ body>
</ html>
筛选数组
<! 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 = [ 1500 , 1200 , 2000 , 2100 , 1800 ] ;
var newArr = [ ] ;
for ( var i = 0 ; i < arr. length; i++ ) {
if ( arr[ i] < 2000 ) {
newArr. push ( arr[ i] ) ;
}
}
console. log ( newArr) ;
</ script>
</ head>
< body>
</ body>
</ html>
2.7.6.2 数组排序
<! 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 = [ 'pink' , 'red' , 'blue' ] ;
arr. reverse ( ) ;
console. log ( arr) ;
var arr1 = [ 13 , 4 , 77 , 1 , 7 ] ;
arr1. sort ( function ( a, b ) {
return b - a;
} ) ;
console. log ( arr1) ;
</ script>
</ head>
< body>
</ body>
</ html>
2.7.6.3 数组索引方法
获取数组元素索引方法
<! 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 = [ 'red' , 'green' , 'pink' ] ;
console. log ( arr. indexOf ( 'blue' ) ) ;
var arr = [ 'red' , 'green' , 'blue' , 'pink' , 'blue' ] ;
console. log ( arr. lastIndexOf ( 'blue' ) ) ;
</ script>
</ head>
< body>
</ body>
</ html>
数组去重
<! 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>
function unique ( arr ) {
var newArr = [ ] ;
for ( var i = 0 ; i < arr. length; i++ ) {
if ( newArr. indexOf ( arr[ i] ) === - 1 ) {
newArr. push ( arr[ i] ) ;
}
}
return newArr;
}
var demo = unique ( [ 'blue' , 'green' , 'blue' ] )
console. log ( demo) ;
</ script>
</ head>
< body>
</ body>
</ html>
2.7.6.4 数组转换为字符串
<! 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 = [ 1 , 2 , 3 ] ;
console. log ( arr. toString ( ) ) ;
var arr1 = [ 'green' , 'blue' , 'pink' ] ;
console. log ( arr1. join ( ) ) ;
console. log ( arr1. join ( '-' ) ) ;
console. log ( arr1. join ( '&' ) ) ;
</ script>
</ head>
< body>
</ body>
</ html>
基本包装类型
<! 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 str = 'andy' ;
console. log ( str. length) ;
var temp = new String ( 'andy' ) ;
str = temp;
temp = null ;
</ script>
</ head>
< body>
</ body>
</ html>
字符串的不可变性
<! 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 str = 'andy' ;
console. log ( str) ;
str = 'red' ;
console. log ( str) ;
var str = '' ;
for ( var i = 1 ; i <= 1000000000 ; i++ ) {
str += i;
}
console. log ( str) ;
</ script>
</ head>
< body>
</ body>
</ html>
2.7.7 字符串
2.7.7.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 str = '改革春风吹满地,春天来了' ;
console. log ( str. indexOf ( '春' ) ) ;
console. log ( str. indexOf ( '春' , 3 ) ) ;
</ script>
</ head>
< body>
</ body>
</ html>
根据位置返回字符
<! 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 str = 'andy' ;
console. log ( str. charAt ( 3 ) ) ;
for ( var i = 0 ; i < str. length; i++ ) {
console. log ( str. charAt ( i) ) ;
}
console. log ( str. charCodeAt ( 0 ) ) ;
console. log ( str[ 0 ] ) ;
</ script>
</ head>
< body>
</ body>
</ html>
2.7.7.2 字符串操作方法
字符串操作方法
<! 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 str = 'andy' ;
console. log ( str. concat ( 'red' ) ) ;
var str1 = '改革春风吹满地' ;
console. log ( str1. substr ( 2 , 2 ) ) ;
</ script>
</ head>
< body>
</ body>
</ html>
2.7.7.3 其他方法
replace()方法
replace(被替换的字符串, 要替换为的字符串);
split()方法
split()方法用于切分字符串,它可以将字符串切分为数组。在切分完毕之后,返回的是一个新数组。
<! 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 str = 'andyandy' ;
console. log ( str. replace ( 'a' , 'b' ) ) ;
var str1 = 'abcoefoxyozzopp' ;
while ( str1. indexOf ( 'o' ) !== - 1 ) {
str1 = str1. replace ( 'o' , '*' ) ;
}
console. log ( str1) ;
var str2 = 'red, pink, blue' ;
console. log ( str2. split ( ',' ) ) ;
var str3 = 'red&pink&blue' ;
console. log ( str3. split ( '&' ) ) ;
</ script>
</ head>
< body>
</ body>
</ html>
2.7.8 JavaScript 简单类型与复杂类型
简单类型又叫做基本数据类型或者值类型,复杂类型又叫做引用类型。
值类型:简单数据类型/基本数据类型,在存储时变量中存储的是值本
身,因此叫做值类型
string ,number,boolean,undefined,null
引用类型:复杂数据类型,在存储时变量中存储的仅仅是地
址(引用),因此叫做引用数据类型
通过 new 关键字创建的对象(系统对象、自定义对象),
如 Object、Array、Date等
简单类型传参
函数的形参也可以看做是一个变量,当我们把一个值类型变量
作为参数传给函数的形参时,其实是把变量在栈
空间里的值复制了一份给形参,那么在方法内部对形参做任何
修改,都不会影响到的外部变量。
复杂类型传参
函数的形参也可以看做是一个变量,当我们把引用类型变量传给形
参时,其实是把变量在栈空间里保存的堆地
址复制给了形参,形参和实参其实保存的是同一个堆地址,所以操
作的是同一个对象。
简单数据类型null
<! 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 timer = null ;
console. log ( typeof timer) ;
</ script>
</ head>
< body>
</ body>
</ html>
简单数据类型传参
<! 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>
function fn ( a ) {
a++ ;
console. log ( a) ;
}
var x = 10 ;
fn ( x) ;
console. log ( x) ;
</ script>
</ head>
< body>
</ body>
</ html>
复杂数据类型传参
<! 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>
function Person ( name ) {
this . name = name;
}
function f1 ( x ) {
console. log ( x. name) ;
x. name = "张学友" ;
console. log ( x. name) ;
}
var p = new Person ( "刘德华" ) ;
console. log ( p. name) ;
f1 ( p) ;
console. log ( p. name) ;
</ script>
</ head>
< body>
</ body>
</ html>
想要获取该该课程markdown笔记(脑图+笔记)。可以扫描以下
微信公众号二维码。或者搜索微信公众号-Java大世界。回复js
即可获取笔记获取方式。