es6-day03-函数标准对象

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>函数,对象</title>
</head>
<body>
<script type="text/javascript">

    'use strict'
    //定义函数,两种方法
    //方法一
    function methods(x) {
        if (x < 0) {
            return -x;
        } else {
            return x;
        }
    }

    //方法二
    var xx = function (x) {
        if (x < 0) {
            return -x;
        } else {
            return x;
        }
    }

    //调用,传入的参数可多可少
    methods(2, 4, -6);//2
    methods();//undefined
    xx(-2, 'r');//2
    xx();//undefined
    //防止undefined

    var xxx = function (x) {
        //类型比较,抛出异常
        if(typeof x !== 'number'){
            throw 'this is not a number';
        }
        if (x < 0) {
            return -x;
        } else {
            return x;
        }
    }
    xxx('a',12);//day03.html?_ijt=4heq2cefvmlfk3dcusn8rcuqga:37 Uncaught this is not a number

    //arguments只在函数内部起作用,指向当前函数调用者传入的所有参数,
    // 作用,可以拿到传入的所有参数,也就是说,即使不定义任何参数,也能获取传入参数的值
    function aa(){
        if (arguments.length === 0){
            return 0;
        }
        var y = arguments[0];
        return y>10?11:9;
    }
    aa(1);//9
    aa(33);//11

    //rest参数(es6引入)
    function bb(a, b, ...rest){
        console.log(a+':'+b);//1:2
        console.log(rest);//[3, 4]
    }
    bb(1,2,3,4)

    //变量作用域,var申明的变量是有作用域的

    //(1)函数体外不能引用函数体内的函数,因为使用了'use strict'严格控制模式
    function qq(){
        var j=9;
        j+=1;
        console.log(j);//j=10
    }
    j+=2;//Uncaught ReferenceError: qq is not defined

    //(2)函数可以嵌套,即函数里可以有函数,变量相同时,按照就近原则赋值
    function ww(){
        var y = 2;
        function pp() {
            var y='S';
            console.log(y);//y值为s
        }
        console.log(y);//y值为2
        pp();
    }

    //变量提升,即可以先使用,后定义,并不会报错,提升的是指未定义之前就用,
    //但是后面只能起申明,不能赋值
    function mm() {
        var x = 'w'+z;
        var y =12+z
       console.log(x);//x为wundefined
        console.log(y);//y为NaN
        var z = 3;
    }

    //全局作用域
    //不在函数体内定义的变量具有全局作用域,window是JavaScript默认的全局对象,
    // 实际上全局作用域的变量被绑到window的一个属性
    var d ='hello';
    alert(d);//hello
    alert(window.d);//hello
    //所以d与window。d作用是一致的,window是可省略的
    /*刚开始就说了,函数有两种定义方式,其实以变量方式 var x = function(){}定义的函数
    是一个全局变量
    * */

    //局部作用域:一般指变量的作用域是在函数内部,外部是无法使用的,但是,注意
    //for循环是无法定义局部变量的,即即使for中变量,也可以在当前函数体中使用
    function pp() {
        for (var i = 0; i <5 ; i++) {

        }
        i+=1;//不会报错,仍然可以使用变量i;
        console.log(i);//i值为6
    }
    /*但是上面显然很作用域很模糊,所有es6引入了新的关键字let,这个关键字可以是for中的变量
     的作用域只在for循环里面,出了for循环,就报错
     */
    function kk(){
        for (let i = 0; i <5 ; i++) {

        }
        i+=1;//报错,ReferenceError: i is not defined
        console.log(i);
    }

    //常量
    /*
    es6,之前,想要声明一个变量是不可以的,通常把变量名大写来表示是一个变量,
    但是还是可以随便改变的,es6引入了新的关键字const定义常量
     */
    const PI = 3.14;
   // PI = 4;//编译就报错

    //方法:在一个对象中绑定函数,称为这个对象的方法
    var per = {
        name:'大大',
        age: function () {
            return 18;
        }
    };
    console.log(per.name);//大大
    per.age();//18

    //标准对象
    typeof 123; // 'number'
    typeof NaN; // 'number'
    typeof 'str'; // 'string'
    typeof Math.abs; // 'function'
    typeof null; // 'object'
    typeof []; // 'object'
    typeof {}; // 'object'
    typeof true; // 'boolean'
    typeof undefined; // 'undefined'

    //Date
    var now = new Date();
    now; // 
    now.getFullYear(); // 2019, 年份
    now.getMonth(); // 0, 月份,注意月份范围是0~11,0表示一月
    now.getDate(); // 17, 表示17号
    now.getDay(); // 5, 表示星期五
    now.getHours(); //  24小时制
    now.getMinutes(); //  分钟
    now.getSeconds(); //  秒
    now.getMilliseconds(); //毫秒数
    now.getTime(); // 以number形式表示的时间戳

</script>

</body>
</html>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用React的useState钩子和ES6的map函数来遍历js-calendar-converter库的任意一年里的十二节气。具体代码如下: ``` import React, { useState } from 'react'; import calendar from 'js-calendar-converter'; const LunarCalendar = () => { const [lunarData, setLunarData] = useState([]); const findSolarTerm = (year) => { const result = []; for (let i = 0; i < 12; i++) { const solarTerm = calendar.getTerm(year, i * 2); const solarTermDate = calendar.solar2lunar( solarTerm.cYear, solarTerm.cMonth, solarTerm.cDay ); result.push({ name: j[i], date: `${solarTermDate.cYear}-${solarTermDate.cMonth}-${solarTermDate.cDay}`, }); } setLunarData(result); }; return ( <div> <button onClick={() => findSolarTerm(2022)}>Find Solar Term</button> {lunarData.map((data) => ( <div key={data.name}> <h3>{data.name}</h3> <p>{data.date}</p> </div> ))} </div> ); }; export default LunarCalendar; ``` 在上面的代码中,我们定义了一个LunarCalendar组件,并在组件内部使用useState钩子来管理节气的阳历日期数据。然后我们定义了一个findSolarTerm函数,它接收一个年份作为参数,并使用for循环和js-calendar-converter库的getTerm和solar2lunar函数来获取每个节气对应的阳历日期,并将它们存储在一个名为result的数组中。最后,我们将result数组设置为useState钩子的初始值。 在组件的返回值中,我们创建了一个按钮,点击它将触发findSolarTerm函数,并将返回的数据渲染到页面上。我们使用map函数遍历lunarData数组,并根据每个节气的名称和阳历日期创建一个div元素来显示它们。 这样,当我们在页面上点击“Find Solar Term”按钮时,就会遍历js-calendar-converter库的2022年所有节气,并显示它们对应的阳历日期。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值