JavaScript入门语法

这篇博客介绍了JavaScript的基本语法,包括打印星星、数组操作、函数的使用、arguments对象的详细解析,以及对象的创建和遍历。还探讨了如何封装函数实现数组翻转、冒泡排序,以及日期和时间的格式化处理。最后讲解了创建数组的两种方法。

打印几行几列的星星

var str = '';
var rows = prompt('请输入有几行');
var cols = prompt('请输入有几列');
for(var i = 1;i<=rows;i++){
	for(var j = 1;j<=cols;j++){
		str = str + '☆';
	}
	str = str + '\n';
}
console.log(str); 

数组转换为字符串,用||分隔

 var str = '';
 var array = ['red','yellow','blue','green']  
 for(var i = 0;i <= array.length;i++){
 str = str + array[i] + '||';
 }
 console.log(str);

筛选数组中大于10的数(方法一)

var array = [1,2,3,0,7,12,67,9,19,4];
var newArray = [];
var j = 0
for(var i = 0;i<array.length;i++){
    if(array[i] > 10){
        newArray[j] = array[i];
        j++;
    }
}
console.log(newArray); 

筛选数组中大于10的数(方法二)

//newArray.length刚开始是0

var array = [1,2,3,0,7,12,67,9,19,4];
var newArray = [];
for(var i = 0;i<array.length;i++){
    if(array[i] > 10){
        newArray[newArray.length] = array[i];
    }
}
console.log(newArray); 

函数:就是封装了一段可被重复执行的代码块

//函数的使用:1声明函数 2调用函数

function getSum(num1,num2){
var sum = 0;
for(var i = num1;i<=num2;i++){
sum = sum + i
}
console.log(sum);
}
getSum(50,100);
getSum(10,50);

利用函数求两个数的最大值

function getMax(num1,num2){
    if(num1>num2){
        return num1;
    }else{
        return num2;
    }
}
console.log(getMax(1,2));

利用函数求数组中的最大值

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 sz = getArrMax([12,13,23,1,25,78,100]);
//console.log(sz);

console.log(getArrMax([12,13,23,1,25,78,100]));

注意点:

  1. 函数的返回值return后面的语句不执行.
  2. break:结束当前循环体(如for,while).
  3. continue:跳出本次循环,继续执行下次循环(如for,while).
  4. return:不仅可以退出循环,还能返回return语句中的值,同时还可以结束当前循环体内的代码.
  5. return只能返回一个值,没有return返回undefined
function(参数1,参数2...){
		函数体;
		return 返回值
}

arguments(只有函数有arguments)

arguments:里面存储了所有传递过来的实参
arguments返回的是一个伪数组:
伪数组:并不是真正意义上的数组

  1. 具有数组的length属性
  2. 按照索引的方式进行存储
  3. 它没有真正数组的一些方法,比如push(),pop()等等

arguments的使用:

function fn(){
console.log(arguments);       //arguments:里面存储了所有传递过来的实参
}
fn(1,2,3);

练习:

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,4,12,23));
console.log(getMax(100,44,12,23,500));

利用函数翻转数组

function reverse(arr){
    var newArr = [];
    for(var i = arr.length - 1;i >= 0;i--){
        newArr[newArr.length] = arr[i]
    }
    return newArr;
}
console.log(reverse([1,2,3,4,5]));

函数封装冒泡排序

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]){
                temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }
    }
    return arr;
}
var arr1 = sort([9,8,7,2]);
console.log(arr1);

函数里面可以调用另外一个函数

function f1(){
    console.log(11);
    f2();
}
f1();
function f2(){
    console.log(22);
}

输出2月份天数

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;
}

对象

对象:对象是一个具体的事物,对象是一组无序的相关属性和方法的集合.所有的事物都是对象
属性:事务的特征(在对象中用属性来表示)常用名词
方法:事务的行为(在对象中用方法来表示)常用动词
注意:()运算符的优先级,[]创建的数组的字面量,{}指对象的字面量
创建对象的三种方式:

1. 利用字面量创建对象 var obj = {} //创建了一个空的对象

var obj = {
//对象属性
	uname = '张三疯',
	age = 18,
	sex = '男',
//对象方法
sayHi:function(){
	console.log('Hi~');
}
}
//(1)里面的属性和方法采取键值对的形式  键 属性名 : 值 属性值
//(2)多个属性或者方法中间用逗号隔开
//(3)方法冒号后面跟的是一个匿名函数
//2使用对象
//(1)调用对象的属性 我们采取  对象名.属性名
console.log(obj.uname);
//(2)第二种方法 对象名['属性名']
console.log(obj['age']);
//3调用对象的方法 对象名.方法名
obj.sayHi();

2. 利用new Object创建对象

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();

3. 利用构造函数创建对象

(1)为什么需要使用构造函数
就是因为我们前面两种创建对象的方式一次只能创建一个对象
因为我们一次创建一个对象,里面很多的属性和方法是大量相同的,我们只能复制
因此我们可以利用函数的方法 重复这些相同的代码 我们就把这个函数称为构造函数
又因为这个函数不一样,里面封装的不是普通代码,而是对象
构造函数 就是把我们对象里面一些相同的属性和方法抽象出来封装到函数里面
(2)构造函数的语法格式:

function 构造函数名(){
    this.属性 =;
    this.方法 = function(){}
}
new 构造函数名()
//我们需要创建四大天王的对象 相同的属性:姓名,年龄,性别 相同的方法 唱歌
//1构造函数的名字首字母要大写
//2构造函数不需要写return就可以返回结果
//3我们调用构造函数 必须使用new
//4我们只要new Star() 调用函数就创建一个对象 ldh
//5我们的属性和方法前面必须添加this

//构造函数 明星 泛指的某一大类 它类似于 java 语言里面的 类(class)
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);
console.log(ldh.name);
ldh.sing('冰雨');
var zxy = new Star('张学友',19,'男');
console.log(zxy['sex']);

遍历对象(for in)

var obj = {
    name: 'pink老师',
    sex : '男',
    age : 18
}
//for in 遍历我们的对象
//for(变量 in 对象){
    
//}
    for(var k in obj){
        console.log(k);  //k 变量 输出 得到的是 属性名
        console.log(obj[k]); //obj[k]  得到的是 属性值
    }

封装自己的数学对象

var myMath = {
    pi:3.1415926,
    max:function(){
        var max = arguments[0];
        for(var i = 1;i<arguments.length;i++){
            if(max<arguments[i]){
                max = arguments[i];
            }
        }
        return max
    },
    min:function(){
        var min = arguments[0];
        for(var i = 1;i<arguments.length;i++){
            if(min>arguments[i]){
                min = arguments[i];
            }
        }
        return min
    }
}
console.log(myMath.pi);
console.log(myMath.max(1,2,5,9,74));

Math随机数方法

function getRandom(min,max){
    return Math.floor(Math.random() * (max - min + 1)) + min;
}
console.log(getRandom(1,10));//随机生成1-10之间的数

例如

function getRandom(min,max){
    return Math.floor(Math.random() * (max - min + 1)) + min;
}
console.log(getRandom(1,10));
var arr= ['张三','张三疯','宿舍','吧'];
console.log(arr[getRandom(0,arr.length-1)]);

猜数字游戏

function getRandom(min,max){
    return Math.floor(Math.random() * (max - min + 1)) + min;
}
var random  = getRandom(1,10);
while(true){
    var num = prompt('你来猜?输入1-10之间的数');
    if(num > random){
       alert('你猜大了') ;
    }else if(num < random){
      alert('你猜小了');  
    }else{
        alert('你猜对了');
        break;
    }
}

格式化日期年月日星期

var date = new Date();
var year = date.getFullYear();//返回当前日期的年 2023
var month =date.getMonth()+1;//月份 返回的月份小1个月  记得月份+1
var dates =  date.getDate();//返回的是几号
var arr= ['星期日','星期一','星期二','星期三','星期四','星期五','星期六']
var day = date.getDay();//周一返回1,周六返回6,周日返回0
console.log('今天是:'+year+'年'+month+'月'+dates+'日'+arr[day]);

格式化日期时分秒

function getTime(){
    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(getTime());

Date总的毫秒数(时间戳)

//1.通过valueOf() getTime()
var date = new Date();
console.log(date.valueOf());//就是 我们现在的时间 距离1970.1.1 总的毫秒数
console.log(date.getTime());
//2.简单的写法(最常用的写法)
var date1 = +new Date(); //+new Date()  返回的就是总的毫秒数
console.log(date1);
//3.H5 新增的 获得总的毫秒数
console.log(Date.now());

倒计时

//倒计时效果
//1.核心算法:输入的时间减去现在的时间就是剩余的时间,即倒计时,但是不能拿着时分秒相减,比如05分减去25分,结果会是负数的.
//2.用时间戳来做.用户输入时间的总的毫秒数减去现在时间总的毫秒数,得到的就是剩余时间的毫秒数
//3.把剩余时间总的毫秒数转换为天,时,分,秒(时间戳转换为时分秒)
//转换公式如下
//d = parseInt(总秒数/60/60/24);//计算天数
//h = parseInt(总秒数/60/60%24);//计算小时
//m = parseInt(总秒数/60%60);//计算分钟
//s = parseInt(总秒数%60);//计算当前秒数

function countDown(time){
    var nowTime = +new Date(); //返回当前时间总的毫秒数
    var inputTime = +new Date(time);//返回的是用户输入时间总的毫秒数
    var times = (inputTime - nowTime) /1000;//time是剩余时间总的秒数
    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('2023-02-28 18:00:00'));

创建数组的两种方式:

1,利用数组字面量

var arr = [1,2,3]
console.log(arr[0]);

2,利用new Array()

var arr1 = new Array();//创建了一个空的数组
var arr1 = new Array(2);//这个2表示数组的长度为2,里面有2个空的数组元素
var arr1 = new Array(2,3);//等价于[2,3],这样写表示里面有2个数组元素,是2和3

检测是否为数组两种方式

1、arr instanceof Array
2、Array.isArray(arr)

function reverse(arr){
    if(arr instanceof Array){
        var newArray =[];
        for(i = arr.length - 1;i>=0;i--){
            newArray[newArray.length] = arr[i];
        }
        return newArray;
    }else{
        return 'error , 这个参数要求必须是数组格式[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));

添加数组元素

1、push() 在我们数组的末尾 添加一个或者多个数组元素 push 推
2、 unshift() 在我们数组的开头 添加一个或者多个数组元素

删除数组元素

筛选数组

var arr = [1500,1200,2000,2100,1800];
var newArr = [];
for(var i = 0;i<=arr.length -1 ;i++){
    if(arr[i]>2000){
        newArr[newArr.length] = arr[i];
    }
}
console.log(newArr);
var arr = [1500,1200,2000,2100,1800];
var newArr = [];
for(var i = 0;i<=arr.length -1 ;i++){
    if(arr[i]<2000){
        newArr.push(arr[i]);
    }
}
console.log(newArr);

数组排序

**sort() **

var arr = [1,4,8,3];
console.log(arr.sort());
var arr = [1,4,18,3,23,21];
console.log(arr.sort());
var arr = [1,4,18,3,23,21];
arr.sort(function(a,b){
    return a-b; //升序
    //return b-a; //降序
    
});
console.log(arr);

获取数组元素索引

indexOf() //只返回第一个满足条件的索引号,从前面开始查找 ,找不到返回-1
lastIndexOf //只返回第一个满足条件的索引号,从后面开始查找,找不到返回-1

数组去重案例

在这里插入图片描述

数组转换为字符串

基本包装类型

字符串不可变

根据字符串返回位置

求某个字符出现的位置以及次数

根据位置返回字符

统计出现字数做多的字符

拼接以及截取字符串

替换字符串以及转换为数组

简单数据类型和复杂数据类型

数据类型内存分配

简单数据类型传参

复杂数据类型传参

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值