一. 变量
1.输入输出语句
1.1输出语句
document.write('输出的内容');
//向body内输出内容
//输出的内容写的是标签,也会解析成网页元素
1.2输出语句
alert('输出的内容');
//页面弹出警示对话框
1.3 控制台输出内容
console.log('控制台打印')
//调试使用
1.4用户输入内容
prompt('请输入你的姓名:')
2.变量类型
//1.数字型
const num = 5;
console.log(typeof num);//Number
//2.字符型
const str = '字符型';
console.log(typeof str);//String
//3.布尔值
const flag = true;
console.log(typeof flag);//Boolean
//4.声明了变量,但没有赋值
const vari = undefined;
console.log(typeof vari);//Underfined
//5.声明了变量为空值
const timer = null;
console.log(typeof timer);//Null
// 1.变量命名规范
// 2.由字母(A-Z a-z) 数字(0-9) 下划线(_) 美元符号($)组成
// 3.严格区分大小写
// 4.var app; var APP;是两个变量
// 5.不能以数字开头
// 6.不能是关键字,保留字
// 7.遵守驼峰命名法,首字母小写,后面单词首字母需要大写
// 8.变量的类型根据=右边的等号的数值来判断
2.1交换变量
let temp,
apple1 = '青苹果',
apple2 = '红苹果';
temp = apple1;
apple1 = apple2;
apple2 = temp;
console.log(apple1);
console.log(apple2);
2.2 let,var 和const的区别
var 声明:
//1.可以先使用 在声明 (不合理)
//2.var 声明过的变量可以重复声明(不合理)
//3.比如变量提升、全局变量、没有块级作用域等等
let 和 const
//变量先给const,如果发现它后面是要被修改的,再改为let
2. 为什么const声明的对象可以修改里面的属性?
//1)因为对象是引用类型,里面存储的是地址,只要地址不变,就不会报错
//2)建议数组和对象使用 const 来声明
3. 什么时候使用let声明变量?
//1)如果基本数据类型的值或者引用类型的地址发生变化的时候,需要用let
//2)比如 一个变量进行加减运算,比如 for循环中的 i++
2.3 typeof 判断变量类型
let num = prompt('请输入数字')
console.log(typeof num);//字符型
let nm = prompt();
console.log(typeof nm);//字符型
2.4全局变量
// 1.全局变量
//全局变量 在整个html页面都可以使用
let num = 10;
console.log(num);//10
function fn() {
console.log(num);//10
}
fn();
//2.局部变量 只能在局部作用域使用
function fun() {
let num1 = 10;
num2 = 20;//全局变量
console.log(num1);//10
}
fun();
// console.log(num1); 报错
console.log(num2);//20
//3. 作用域链 内部函数访问外部函数, 采取链式查找最近的值
let i = 10;
function name1() {
let i = 20;
function name2() {
console.log(i);//20
}
name2();
}
name1();
console.log(i);//10
// 4.案例
let a = 1;
function an() {
let a = 2;
let b = '22';
function an1() {
let a = 3;
function an2() {
let a = 4;
console.log(a);//4
console.log(b);//22
}
an2();
}
an1();
}
an();
2.5 预解析
//预解析
//var 变量提升 ,把所有的变量提升到当前因为页面的最前面,不提升赋值操作
//函数提升 ,把所有的函数提升到当前因为页面的最前面,不调用函数
fun();
var fun = function () {
console.log(22);//报错
}
//相当于
var fun;
fun();
fun = function () {
console.log(22);
}
fn();
function fn() {
console.log(22);
}
//相当于
function fn() {
console.log(22);
}
fn();
//案例
var num = 10;
fc();
function fc() {
console.log(num);// 函数被提到最前面 undefined
var num = 20;
console.log(num);//20
}
var a = 10;
f1();
function f1() {
var b = 9;
console.log(a);//undefined
console.log(b);//9
var a = '123';
}
f2();
console.log(j);//报错
console.log(k);//9
console.log(c);//9
function f2() {
var j = k = c = 9;//相当于var a=9 ; b=9;c=9
console.log(j);//9
console.log(k);//9
console.log(c);//9
}
3.数字类型
<script>
//1.1数字类型 颜色是蓝色
const num=10;
console.log(num);
//1.2数值最大值
alert(Number.MAX_VALUE);//1.7976931348623157e+308
//1.3数值最小值
alert(Number.MIN_VALUE);//5e-324
//1.4isNaN()判断数据类型是非数字
console.log(isNaN(12));//false
console.log(isNaN('PINK'));//true
//1.5数据型三个特殊值
alert(Infinity);//无穷大
alert(-Infinity);//无穷小
alert(NaN);//非数字
</script>
3.1 parseInt 转换为数字类型
//2.转换为数字型
const age=prompt('请输入你的年龄');
console.log(parseInt(age));
//2.1parseInt 取整
console.log(parseInt('3,14'));//3
console.log(parseInt(5.5555));//5
//2.2parseFloat 可以保留小数
console.log(parseFloat(3.14));//3.14
console.log(parseFloat(5.555));//5.55
3.2隐形转换
//递增递减++ --,一元加减 +a、- a(结果的符号取反),二元 -,乘法,除法,求余,隐式转换为 Number;
<script>
let num1 = +'1' + 2;
let num2 = '1' - 2;
let num3 = '1' / 2;
let num4 = '1' * 2;
let num6='1'%2
let num5='1';
num5++;
console.log(typeof num1);//number 3
console.log(typeof num2);//number -1
console.log(typeof num3);//number 0.5
console.log(typeof num4);//number 2
console.log(typeof num5);//number 2
console.log(typeof num6);//number 1
</script>
4.字符型
<script>
//1.字符型 颜色是黑色
const str='我是程序员';
console.log(str);//我是程序员
//2.外双内单 外单内双
const str1='我是"高富帅"程序员';
console.log(str1);//我是"高富帅"程序员
// 3. \n 换行转义符
const str2='我是"高富帅"\n程序员';
console.log(str2);
//4.\t 空格转义符
const str3='我是"高富帅"\t程序员';
console.log(str2);
</script>
4.1 length
//通过字符串的lenght可以判断整个字符的长度
console.log(str1.length);//10
4.2字符串的拼接
//1.字符串拼接: 字符串+任何类型=拼接之后的新字符
alert('hello'+' '+'world')//hello world
//2.数字字符+数值
alert('100'+100)//100100字符型
//3.字符凭借加强
let age =18;
console.log('我已经'+age +'岁了');//我已经18岁了
4.3转换为字符型
let a = 5;
a = String(a); //强制转换为字符串
a = a.toString();
console.log(a);
var a = true;
a = a.toString(); //toString是对象的方法
a = String(a);
console.log(a);
5.Boolean
//代表false:'' 0 NaN null underfined 其他都是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
5.1隐形转换
//1.逻辑语句的类型转换:当使用if、while、for 时,隐式转换为布尔值;
//2.逻辑表达式:
//3.! 逻辑非,隐式转换为布尔值,并取反,!!两次逻辑非,隐式转换为布尔值;
//4.|| 和 && 会将非布尔值,隐式转换为布尔值,再判断;
6.浮点数
//不要判断浮点数是否相等,存在精度问题
let result=0.1+0.2;
console.log(result);//0.30000000000000004
console.log(0.1==0.2);//flase
7.递增
let num=10;
//先加1 ,在返回值
num1=++num;//num=num+1
console.log(num);//11
console.log(num1);//11
//先返回值,再加1
num2=num++;//11
console.log(num);//12
console.log(num2);//11
let a=10,
b=++a+2,//a=11 b=13
c=a+++2,// a=12 c=13
d=a+++ ++a;//a=14 d=26
console.log(a);//14
console.log(b);//13
console.log(c);//13
console.log(d);//26
8.逻辑 中断
//表达式1||表达式2
//1.第一个如果是真,则返回表达式1
//2.第一个如果是假,则返回表达式2
let num = 0
console.log(0 || 123);//123
console.log(123 || 123 || 456);//123
console.log(0 || 0 || 123);//123
console.log(num++ || 123);//123 num=1
console.log(++num || 123);//2
9.赋值运算符
let age = 10;
age += 5;//age=age+5 15
age -= 5;//age=age-5 10
age *= 5;//age=age*5 50
console.log(age);
二.if语句
1.判断时间段
let time = prompt('请输入时间阶段');
if (time == '12点') {
alert('中午好');
} else if (time == '18点') {
alert('傍晚好');
} else if (time == '23点') {
alert('深夜好');
}
time = parseInt(time);
if (time >= 8 && time <= 12) {
alert('上午好');
} else if (time > 12 && time <= 17) {
alert('下午好');
}
2.比较大小
let value1 = prompt('请输入第一个数字'),
value2 = prompt('请输入第二个值');
if (value1 > value2) {
alert(value1);
} else {
alert(value2);
}
3.判断奇偶
let num=prompt('请输入数字');
if(num%2==0){
alert('偶数');
}else{
alert('奇数');
}
4.判断星期
let day = prompt('请输入数字');
switch (day) {
case '1':
alert('星期一');
console.log(day);//字符型
break;
case 1:
alert('星期一');
console.log(typeof day);//number
break;
case '2':
alert('星期二');
break;
case '3':
alert('星期三');
break;
case '4':
alert('星期四');
break;
case '5':
alert('星期五');
break;
case '6':
alert('星期六');
break;
case '7':
alert('星期七');
break;
}
5.switch case 语句
//1.接收班长口袋的钱数
var money=prompt('请输入钱数');
if (money>=2000){
alert('请大家吃西餐');
}
else if (money<2000&&money>=1500){
alert('请大家吃快餐')
}
else if (money<1500&&money>=1000){
alert('请大家喝饮料')
}
else if (money<1000&&money>=500){
alert('请大家吃棒棒糖')
}
else {
alert('让班长把钱带够')
}
//2.成绩定级
let result=prompt('请输入分数')
if (result>=90) {
alert('A')
}
else if (result>=80) {
alert('B')
}
else if (result>=70) {
alert('C')
}
else if (result>=60) {
alert('D')
}
else {
alert('不及格')
}
三. for循环
1.求和
// 1.求1~100之间所有的数字的总和与平均值
let sum = 0;
let average = 0;
for (let i1 = 1; i1 <=100; i1++) {
sum = sum + i1;
}
console.log(i1);//101
average = sum /(i1-1);
console.log(average);//50
console.log(sum);//5050
//2.求1~100之间所有的奇数和偶数的总和
let even =0;
let odd=0;
for (let i2 = 1; i2 <=100; i2++) {
if (i2%2==0) {
even=even+i2;
}else{
odd=odd+i2;
}
}
console.log(even);
console.log(odd);
//3.求100以内7的倍数的总和
let sum7 =0;
for (let i3 = 1; i3 <=100; i3++) {
if (i3%7==0) {
sum7+=i3;
}
}
console.log(sum7);
2.求阶乘
//计算1~100的阶乘的和
let a=1;
let sum=0;
for (let i =1;i <=100;i++) {
a=a*i;
sum+=a;
}
console.log(sum);
3.打印矩形
let str='';
for(let i=1;i<=10;i++){
for(let j=1;j<=10;j++){
str+='☆';
}
str+='\n'
}
console.log(str);
4.打印倒三角形
let str='';
for(let i=0;i<10;i++){
for(let j=10-i;j>0;j--){
str+='☆';
}
str+='\n'
}
console.log(str);
5.打印正三角形
let str = '';
for (let i = 1; i <= 10; i++) {
for (let j = 1; j <= i; j++) {
str += '☆';
}
str += '\n'
}
console.log(str);
6.打印等腰三角形
var str='';
for(let i=1;i<=10;i++){
for(let j=10-i;j>0;j--){
str+='☆';
}
for(let k=1;k<=i;k++){
str+='★';
}
for(let a=2;a<=i;a++){
str+='★';
}
for(let j=10-i;j>0;j--){
str+='☆';
}
str+='\n'
}
7.打印九九乘法表
let str='';
for(let i=1;i<=9;i++){
for(let j=1;j<=i;j++){
str+=i+'*'+j+'='+i*j+'\t';
}
str+='\n';
}
console.log(str);
8.打印水仙花数
//水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身。例如:1^3 + 5^3+ 3^3 = 153。
for (let i = 100; i <= 999; i++) {
let a = parseInt(i / 100);
let b = parseInt(i % 100 / 10);
let c = parseInt(i % 10);
if (i == a * a * a + b * b * b + c * c * c) {
console.log(i);
}
}
9.质数
//方法一
function test(num) {
for (let i = 2; i < num; i++) {
if (num % i == 0) {
break;
}
}
if (i == num) {
alert(num + "是素数");
} else {
alert(num + "是合数");
}
}
test(8);
//方法二
function test(num) {
let flag=true;
for (let i = 2; i < num; i++) {//i=7 num=7
if (num % i == 0) {
flag=false;
break;
}
}
if (flag == true) {
alert(num + "是素数");
} else {
alert(num + "是合数");
}
}
test(8);
//方法三
function test(num) {
let flag=true;
let sum=0;
for (let i = 2; i < num; i++) {//i=7 num=7
if (num % i == 0) {
sum++;
}
}
if (sum == 0) {
alert(num + "是素数");
} else {
alert(num + "是合数");
}
}
test(8);
10.打印菱形
let str='';
for (let i=1;i<=5;i++) {
for(let j=1;j<=5-i;j++){
str+='◆';
}
for(let k=1;k<=2*i-1;k++){
str+='◇';
}
str+='\n';
}
for (let a=1;a<=5;a++) {
for(let b=1;b<=a;b++){
str+='◆';
}
for(let c=0;c<10-(2*a+1);c++){
str+='◇';
}
str+='\n';
}
console.log(str);
11.简易ATM
let moneny = 100;
let num = prompt('请输入数字:\n1.存钱\n2.取钱\n3.显示余额\n4.退出');
switch (num) {
case '1':
value = prompt('请输入你要存的钱数');
moneny = moneny + parseInt(value);
alert('你的余额为:' + moneny + '元');
break;
case '2':
value = prompt('请输入你取的钱数');
moneny = moneny - value;
alert('你的余额为:' + moneny + '元');
break;
case '3':
alert('你的余额为:' + moneny + '元');
break;
case '4':
alert('你已退出');
break;
default:
break;
}
12.无限循环
let you = prompt('你爱我吗');
while (you !== '你爱我') {
you = prompt('你爱我吗');
}
alert('我也爱你');
四.数组
一) 数组基础
1.创建数组 arr=[ ]
//1.创建一个新数组
var arr= new Array();//创建一个空了的数组
//2.利用数组字面量创建了一个空的数组
var arr=[];//空数组
var arr=['a','b','c'];
//索引号
// var arr=['a','b','c']
//索引号 0 1 2
2.遍历数组
let arr = ['a', 'b', 'c'];
for (let i = 0; i < 3; i++) {
console.log(arr[i]);
}
3.数组长度 arr.lenght
//数组长度 数组名.lenght
const arr = [1, 2, 3, 4, 5];
console.log(arr.length);//5
//遍历数组
for (let i = 0; i < arr.length; i++) {
console.log(arr[i]);//1 2 3 4 5
}
4.求数组的总和和平均值
let arr = [4, 7, 5, 9, 120];
let sum = 0;
let average = 0;
for (let i = 0; i < arr.length; i++) {
sum += arr[i];
}
average = sum / arr.length;
console.log(sum);
console.log(average);
5.求数组最大值
let arr=[3,6,4,89,13,300];
let max=0;
for(let i=0;i<arr.length;i++){
if(arr[i]>max){
max=arr[i];
}
}
console.log(max);
6.数组转换为字符串
const arr=['red','blue','green','yellow','pink'];
let str='' ;
for(let=0;i<arr.length;i++){
str+=arr[i]+'\n';
}
console.log(str);
7.新增,修改数组长度
const arr=[1,2,3,4,5];
console.log(arr.length);//5
arr.length=6;//把数组的长度改为6
//1.追加新元素
arr[6]='pink';
//2.替换元素
arr[0]='red';
console.log(arr[0]);//red
console.log(arr[4]);//5
console.log(arr[5]);//underfined
console.log(arr[6]);//pink
8.颠倒数组
//方法一
const arr = [1, 2, 3, 4, 5];
const arrNew = [];
for (let i = 0; i < arr.length; i++) {
for (let j = 0; j < arr.length - i; j++) {
arrNew[j] = arr[i];
}
}
console.log(arrNew);
//方法二
const arr = [1,2,3,4,5];
const newArr=[];//刚开始new.就是0
for(let i=arr.length-1;i>=0;i--){
//新数组索引号从0开始,依次递增
newArr[newArr.length]=arr[i];
}
console.log(newArr);
9.利用循环添加元素
const arr=[];
for (let i=0; i <100; i++) {
arr[i]=i+1;
}
console.log(arr);
10.数组去重
const arr=[1,0,3,4,0,5,0,8];
const newArr=[];
for(let i=0;i<arr.length;i++){
if(arr[i]!==0){
newArr[newArr.length]=arr[i];
}
}
console.log(newArr);
11.冒泡排序
const arr=[1,4,25,7,90,5,14334,35434,76568];
const temp=0;
for(let i=0;i<arr.length;i++){
for(let j=0;j<arr.length-i;j++){
if(arr[j]>arr[j+1]){
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
console.log(arr);
二) .数组的方法
1.检测数组 instanceof
//1.instanceof
let arr=[];
let obj={};
console.log(arr instanceof Array);//true
console.log(obj instanceof Array);//flase
//2. Array.isArray()
console.log(Array.isArray(arr));//true
console.log(Array.isArray(obj));//flase
2.增加数组元素 push
//1.push 在数组后面加一个或多个元素
let arr=[1,2,3,4,5];
console.log(arr.push('red','pink'));//7
console.log(arr);
//去重数组
let arr1=[102,3,6,444,666,56,99];
let newArr1=[];
for(let i=0; i<arr1.length;i++){
if(arr1[i]<100){
newArr1.push(arr1[i]);//[3,6,56,99]
}
}
console.log(newArr1);
//2.unshift 在数组前面加一个或多个元素
let newArr=arr.unshift('1', '2','3','5' )
console.log(newArr);//11
console.log(arr);
for(let i=0; i<arr1.length;i++){
if(arr1[i]<100){
newArr1.unshift(arr1[i]);//[99,56,6,3]
}
}
3.删除数组元素 pop
let arr = [1, 2, 5, 9, 99, 95];
console.log(arr.pop());//95
console.log(arr);[1, 2, 5, 9, 99]
//1.pop可以删除数组的最后一个元素,一次只能删除一个
//2.pop()没有参数
//3.返回的结果是删除的元素
//4.原数组也会变化
console.log(arr.shift());//1
console.log(arr);//[1,2,5,9,99]
//1.pop可以删除数组的最前面一个元素,一次只能删除一个
//2.pop()没有参数
//3.返回的结果是删除的元素
//4.原数组也会变化
4.翻转 reverse 和排序 sort
//1.翻转数组 reverse
let arr=['pink','red','blue'];
arr.reverse();
console.log(arr); ['blue', 'red', 'pink']
//2.数组排序 sort
let arr1=[1,3,25,9,95,99,69];
arr1.sort(function (a,b) {
//return a-b;升序排列
return b-a;//降序排列
})
console.log(arr1);[99, 95, 69, 25, 9, 3, 1]
5.返回数组索引号 indexOf
//1.indexOf 返回数组元素的索引号,从前面开始查找
//只返回第一个满足条件的索引号
//找不到元素,返回-1
let arr=[1,1,1,2,35,5,66,66,7];
console.log(arr.indexOf(1));//0
console.log(arr.indexOf(9));//-1
//2.lastindexOf 从后面开始查找
console.log(arr.lastIndexOf(1));//2
console.log(arr.lastIndexOf(9));//-1
6.利用indexOf 去重数组
function fn(arr) {
let newArr = [];
for (let i = 0; i < arr.length; i++) {
if (newArr.indexOf(arr[i]) === -1) {
newArr.push(arr[i]);
}
}
return newArr;
}
let arr = [1, 1, 11, 1, 5, 79, 6, 55, 666];
fn(arr);
console.log(fn(arr));//[1, 11, 5, 79, 6, 55, 666]
7.tostring()将数组转换为字符串 join 分隔符
//1.tostring() 将数组转换为字符串
let arr = [1,12,3];
console.log(arr.toString());//1,12,3 黑色
//2 join(分隔符)
let arr1=['blue','red','pink']
console.log(arr1.join());//默认 blue, red,pink
console.log(arr1.join('-'));//默认 blue- red-pink
console.log(arr1.join('='));//默认 blue=red=pink
五.函数
1.函数声明
//方法一
function fn(aru) {
console.log(aru);
}
//调用函数
fn('调用函数');
//方法二
const na = function (aru) {
console.log('我是函数表达式');
console.log(aru);
}
na(aru);
2.利用函数求任意数的总和
function getSum(start,end) {
var sum=0;
for(i=start;i<=end;i++){
sum+=i;
}
console.log(sum);
}
getSum(1,100);//5050
getSum(1,1000);//500500
3.函数形参和实参
function getSum(num1,num2){
console.log(num1+num2);
}
//1.如果实参的个数和形参的个数一致,正常输出结果
getSum(1,2);//3
//2.如果实参的个数和等于大于形参的个数一致,会取得形参的个数
getSum(1,2,3);//3
//3.如果实参的个数小于形参的个数
//4.num2是一个变量没有接受值,结果是underfined
getSum(1);//NaN
4.利用函数求两个数的最大值
function getSum(num1,num2) {
if(num1>num2){
console.log(num1);
}else{
console.log(num2);
}
}
getSum(2,59);
5.return 返回值
function getSum(num1,num2) {
//return 只能返回一个值
return num1+num2;//3
console.log('我是不会被执行了');
}
console.log(getSum(1,2));
function getSums(num1,num2) {
//return 只能返回一个值
//返回的结果是最后一个值
return num1,num2;//2
}
console.log(getSums(1,2));
//求任意两个数的加减乘除
function getResult(num1,num2) {
return [num1+num2,num1-num2,num1*num2,num1/num2];
}//[3, -1, 2, 0.5]
var re=getResult(1,2);
console.log(re);
6.计算器
let value = prompt('1.加法\n2.减法\n3.乘法\n4.除法');
function getResult(num1, num2) {
switch (value) {
case '1':
return num1 + num2;
case '2':
return num1 - num2;
case '3':
return num1 * num2;
case '4':
return num1 / num2;
}
}
let age1=prompt('请输入第一个数字');
let age2=prompt('请输入第二个数字');
let value1=parseFloat(age1);
let value2=parseFloat(age2);
let re=getResult(value1,value2);
alert('结果为:'+re);
7.用户输入多个数字的最大值
const max = 0;
const num1=parseInt(prompt('请输入第一个值'));
const num2=parseInt(prompt('请输入第二个值'));
const num3=parseInt(prompt('请输入第三个值'));
const arr = [num1, num2, num3];
function fn(arr) {
for (let i = 0; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
}
fn(arr);
alert(max);
console.log(arr);
console.log(max);
8.arguments 的使用
//arguments 里面储存了所有传递过来的实参 arguments=[1,2,3]
function fn() {
for (let i=0; i<arguments.length;i++){
console.log(arguments[i]);//1 2 3
}
}
fn(1,2,3);
9.利用argument求最大值
function fn() {
let max=arguments[0];
for(let i=1;i<arguments.length;i++){
if(arguments[i]>max){
max=arguments[i];
}
}
return max;
}
console.log(fn(1,23,5));
10.利用函数翻转数组
function reverse(arr) {
let newArr=[];
for(let i=arr.length-1;i>=0;i--){
newArr[newArr.length]=arr[i];
}
return newArr;
}
let arr1=reverse([1,2,3,4,5]);
console.log(arr1);
11.利用函数封装冒泡排序
function sort(arr) {
let newArr=[];
for(let i=0;i<arr.length-1;i++){
for (let j=0;j<arr.length-i-1;j++) {
if(arr[j]>arr[j+1]){
let temp=0;
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
return arr;
}
let arr1=sort([5,6,12,45,9,143,89]);
console.log(arr1);
12.利用函数判断闰年
function fn(year) {
let flag = false;
if (year % 4 == 0 && year % 100 !== 0 || year % 400 == 0) {
flag = true;
}
return flag;
}
console.log(fn(2000));
13.调用函数
function fn1(){
console.log(111);
fn2();
console.log(222);
}
function fn2() {
console.log(333);
console.log('fn2');
}
// 111 333 fn2 222
六.对象
1.创建对象 obj={ }
//1.方法一 创建对象
const object={
name:'张三丰',
age:18,
sayHi:function(){
console.log('hi~');
}
}
//调用方法一
console.log(object.name);
//调用方法二
console.log(object['age']);
//调用对象的方法
object.sayHi();
console.log(object);
//方法二
let obj= new Object();
obj.name='张三丰';
obj.age=18;
obj.sex='男';
obj.sayHi=function(){
console.log('hi~');
}
console.log(obj);
2.new构造函数创建对象
function Star(na,age,sex ,sing) {
this.na=na;
this.age=age;
this.sex=sex;
this.sing=function (a) {
console.log(a);
}
}
let obj=new Star('我',18,'男');
obj.sing('冰雨');
console.log(wo.na);
console.log(typeof wo);
//new创建了一个空的对象
//this就会指向创建空了对象
//返回这个对象
3.for in 遍历对象
const obj = {
name: 'pink',
age: 18,
sex: '男',
fn: function () {
}
}
//for in 遍历对象
for (const k in obj) {
console.log(k);//属性名
console.log(obj[k]);//属性值
}
//对象案例
const object = {
color: 'pink',
weight: '18kg',
height: '180cm',
fn: function () {
console.log('我可以打游戏,听音乐');
}
}
for (const key in object) {
console.log(key);
console.log(object[key]);
}
4.Math数学对象
console.log(Math.PI);//3.141592653589793
console.log(Math.max(1,333,444,663,789));//789
console.log(Math.max(1,333,'pink'));//NaN
console.log(Math.max());//-Infinity
5.随机整数 random
//随机整数
function getRandom(min,max) {
return Math.floor(Math.random()*(max-min-1))+min
}
//1.输入0~10之间的一个数字
let random=getRandom(0,10);
while (true) {//死循环
let num=prompt('请输入0~10一个数字');
if(num>random||num<random){
alert('猜错了');
}else{
alert('你猜对了');
break;
}
}
//2.输入0~50 之间的一个数字,只有十次机会
let ran=getRandom(0,50);
for(let i=0;i<10;i++){
let number=prompt('请输入0~50一个数字');
if(number>ran||number<ran){
alert('猜错了');
}else{
alert('你猜对了');
break;
}
}
6.日期对象 new Date()
let date = new Date();
console.log(date);//没有参数,返回当前系统的时间
//参数常用写法
var date1 = new Date('2022-6-26 17:09');
console.log(date1);
//格式化 年 月 日
console.log(date.getFullYear());//返回当前日期的年 2022
console.log(date.getMonth() + 1);//返回月份小1个月 6
console.log(date.getDate())//返回几号
console.log(date.getDay())//周一返回1 周六返回6 周日返回0
console.log(date.getTime());//毫秒
// 写一个日期 2022.6.26 星期天
var year = date.getFullYear();
var month = date.getMonth() + 1;
var da = date.getDate();
var day = date.getDay();
var arr = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']
console.log('今天是' + year + '年' + month + '月' + da + '日 ' + arr[day]);
7.返回当前时间
function fn() {
let time = new Date();
let h = time.getHours();
h = h < 10 ? '0' + h : h;
let m = time.getMinutes();
m = m < 10 ? '0' + m : m;
let s = time.getSeconds();
s = s < 10 ? '0' + s : s;
return h + ':' + m + ':' + s;
}
console.log(fn());
8.返回当前总毫秒数 +new Date()
let date=new Date();
//1.通过 valueOf() getTime()
console.log(date.valueOf());
console.log(date.getTime());
//2.简单写法
let date1= +new Date();
console.log(date1);
//h5 新增的
console.log(Date.now());
9.总毫秒数换算成日期
function fn(times) {
let date = new Date();
let time1 = +new Date();
let time2 = +new Date(times);
let time = (time2 - time1) / 1000;
let d = parseInt(time / 60 / 60 / 24);
d = d < 10 ? '0' + d : d;
let h = parseInt(time / 60 / 60 % 24);
h = h < 10 ? '0' + h : h;
let m = parseInt(time / 60 % 60);
m = m < 10 ? '0' + m : m;
let s = parseInt(time % 60);
s = s < 10 ? '0' + s : s;
return d+'天'+h+'小时'+m+'分钟'+s+'秒'
}
console.log(fn('2022-6-30 18:00:00'));
10.换算为年月日
function fn(times) {
let time1 = +new Date();
let time2 = +new Date(times);
let time = (time2 - time1) / 1000;
let y = parseInt(time / 60 / 60 / 24 / 365);
y = y < 10 ? '0' + y : y;
let d =parseInt(time/60/60/24%365);
d = d < 10 ? '0' + d : d;
let h =parseInt(time/60/60%24);
h = h < 10 ? '0' + h : h;
let m =parseInt(time/60%60);
m = m < 10 ? '0' + m : m;
let s =parseInt(time%60);
s = s< 10 ? '0' + s : s;
return y+'年'+d+'天'+h+'小时'+m+'分'+s+'秒';
}
console.log(fn('2023-6-27 19:00:00'));
11.字符
11.1 字符对象
let str='改革春风来了,春天来了';
console.log(str.indexOf('春'));//3
console.log(str.indexOf('春',3));//7 从第三处开始
let str1='ooobvcxcooffsgg';
console.log(str.length);//11
console.log(str1[1]);//o
let index=str1.indexOf('o');
let num=0;
while(index!=-1){
console.log(index);
num++;
index=str1.indexOf('o',index+1)
}
console.log('次数为:'+num);
11.2 字符出现的位置和次数 indexOf
let str='aaavvveeertghjhj';
let index=str.indexOf('a');
let num=0;
while(index!=-1){
console.log(index);
num++;
index=str.indexOf('a',index+1);
}
console.log(num);
11.3 根据字符的位置返回字符
// 1.charAt() 根据位置返回字符
let str='andy';
console.log(str.charAt(0));//a
//遍历字符
for(let i=0;i<str.length;i++){
console.log(str.charAt(i));
}
//2. charCodeAt() 返回相应字符ASCII值,目的:判断用户按下那个键
console.log(str.charCodeAt(0));//97
//3.str[] H5
console.log(str[0]);//a
11.5链接和截取,替换字符
//1. concat 链接字符
let str='andy';
console.log(str.concat('red'));//andyred
//2.substr('截取的起始位置','截取几个字符')
let str1='隔岸观火那你佛法';
console.log(str1.substr(2,2));//观火
console.log(str1);//隔岸观火那你佛法
//3.替换字符 replace('被替换的字符','替换后的字符')
console.log(str.replace('a','*'));
11.6字符转换为数组 split
//字符转换为数组 split
let str='red blue pink';
console.log(str.split(','));//[ 'red blue pink']
let str1='1 2 3'
console.log(str1.split('&'));//['1 2 3']