JavaScript(三):作用域、预解析、Math对象、日期对象

一、作用域

二、预解析

1:如果先输出,再声明,那么默认会把变量声明提升到最前,但是不赋值

2:这里虽然是声明函数,但是是变量提升,也就是先声明fun变量,再给fun函数,所以会报错。像这种一般都是先预解析声明变量,然后后面的代码照抄。

3:如果函数这样声明,那么不管在前面调用还是后面调用是没有影响的,因为默认会把函数声明放到最前面预解析

所以这个例子默认是这样的代码:

三、对象

无序的相关属性和方法的集合

对象由属性和方法组成

创建对象的三种方法

1.字面量

Var obj={};空的对象



Var obj={

Name:’张三疯‘,

age:18,

sex:‘男’,

sayHi:function(){

Console.log(‘Hi’);

}

};

有属性,有方法(逗号隔开)

使用对象:对象名.属性名

Log   obj.name / obj[‘age’]

Obj.sayHi();这个直接用不用log

2.new Object

Var obj = new Object();创建空对象

Obj.uname = ‘张张‘;

obj.name=18;

obj.sex=‘男’;

obj.sayHi = function(){

Console.log(‘Hi’);

}

3.构造函数(里面封装的不是普通代码是对象)

前面两种只能一次创建一个对象

function Star (name,age,sex) {

         this.age=age;

         this.name=name;

         this.sex=sex;

         this.sing=function(sang){

             console.log(sang);

         }

     }

     var ldh=new Star('ldh',18,'nan');

     ldh.sing('bingyu');

(名字首字母要大写)

调用:var ldh=new Star('ldh',18,'nan');不需要return就可以返回结果

只要调用了函数就创建了一个对象

利用构造函数创建对象的过程也称为对象的实例化

遍历对象属性

for(var k in obj){

Console.log(k);K变量输出,得到的是属性名

console.log(obj[k];得到的是属性值

}

遍历不能用于第三种方法上

注意:

1.构造函数首字母必须大写,这是约定
2.构造函数不需要return,就可以返回结果
3.调用构造函数创建对象必须要有new
4.和普通函数相比,其实就多了this和new
5.注意这里的形参和实参

4.遍历对象

	var dog = {
	    name: '可可',
	    age: 5,
	    type: '阿拉斯加犬',
	    color: '棕红色',
	    skills: function () {
	        console.log('bark');
	        console.log('showFilm');
	    }
	}

遍历:

	for (var k in dog) {
	    console.log(k);  //k是得到属性名
	    console.log(dog[k]);  对象名[k]是得到属性值
	}

5.Math对象

四舍五入,但是5特殊,往大了取,1.5按2,-1.5按-1

6.随机数方法random

返回一个随机的小数【0,1)

console.log(Math.random());

案例: 猜数字游戏,猜十次猜不到就停止

function getNum(min,max)
    {
        return Math.floor(Math.random() * (max - min + 1)) + min;
    }
    var num=getNum(1,10);
    for(var i=1;i<=10;i++)
    {
        var yournum= prompt('请输入一个数字');
        if(yournum<num&&i<=10){
            console.log('猜小啦');
            continue;
        }
        else if(yournum<num&&i<=10){
            console.log('猜小啦');
            continue;
        }
        else if(yournum==num&&i<=10){
            console.log('猜对啦');
            break;
        }
        else{
            console.log('没次数啦');
            break;
        }
    }

取随机数这个要记住

7.日期对象

是一个构造函数,必须new一下才能使用

var date = new Date();没有参数,就返回系统当时时间

var date = new Date(2019,10,1);但是这种写法月份输出的会大一

var date = new Date(‘2019-10-1 8:8:8’);这种比较常见也没有什么问题

 var date=new Date('2023-8-16 8:8:8');
     console.log(date.getDate());

月份就会比实际小1,get之后再加一下

8.获得date的毫秒数

是从1970年1月1日开始的

var date=new Date();

1.console.log(date.valueOf());

2.console.log(date.getTime());

3.Var date1=+new Date();  !!!

4.console.log(Date.now());!!!!!!!

H5新增的获取总毫秒数的写法:

     console.log(Date.now());

倒计时案例!!!

总体思想是用未来的时间减去现在的时间,但是分钟减分钟可能还得减出来负数,所以就用时间戳来,算总共的时间去减

function countDown(time){
        // time是用户输入的时间
        var nowTime = +new Date();
        // ()内为空返回的是当前时间的毫秒数
        var futureTime= +new Date(time);
        var times=(futureTime-nowTime)/1000; //times是总的毫秒数,除以1000是秒数
        var day=parseInt(times/60/60/24);
        day=day<10?'0'+day:day;
        var hour=parseInt(times/60/60%24);
        hour=hour<10?'0'+hour:hour;
        var m=parseInt(times/60%60);
        m=m<10?'0'+m:m;
        var s=parseInt(times%60) ;
        s=s<10?'0'+s:s;
        // 得是整数啊!
        return day+'天'+hour+'小时'+m+'分钟'+s+'秒';
    }
    console.log(countDown('2024-5-1 18:00:00'));
    var date=new Date();
    console.log(date);
// 但是这样写有点不好看,00:05这样

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值