JavaScript进阶

(一)JS内置对象

JS内部已经内置了不少对象,类似于Python中的内置模块,可以直接使用,并且对象一般不需要导入,可以直接使用。

(1)math对象

Math对象是一个处理数学相关的对象,可以用来执行在数学相关的内容。

<body>
<script>
    // Math对象 数学对象

    // console.log(Math.PI)  // 圆周率
    // console.log(Math.pow(2,3))  // 幂次方
    // console.log(Math.round(1.56))  // 四舍五入 不保留小数位
    // console.log(Math.ceil(1.26))  // 向上取整  2 不保留小数位
    // console.log(Math.floor(1.56))  // 向下取整  1 不保留小数位
    // console.log(Math.max(1,2,3,4,5))  // 5 取最大值
    // console.log(Math.min(1,2,3,4,5))  // 1 取最小值
    // console.log(Math.random())  // 随机数 0-1
    // 0-100
    // console.log(Math.random()*100)  // 随机数 0-100
    // 取出来是一个整数
    // console.log(Math.round(Math.random()*100))  // 随机整数 0-100
    // console.log(Math.random() * 99 + 1)   //0-100随机数
    // console.log(Math.abs(-5)) // 绝对值
</script>

</body>

(2)日期对象

日期也是常用对象之一,基本和常用的方法都是需要了解和熟悉。

<body>
<script>
    // Date 日期对象
    data = new Date() //得到日期对象
    // console.log(data.getTime())  //时间戳
    // console.log(data.getFullYear())  //年份
    // console.log(data.getMonth()+1)  //月份 0-11  加一
    // console.log(data.getDate())  //日期
    // console.log(data.getHours())  //时
    // console.log(data.getMinutes())  //分
    // console.log(data.getSeconds())  //秒
    // console.log(data.getDay())  //周期
    year = data.getFullYear()
    month = data.getMonth()+1
    date = data.getDate()

    document.body.innerText = year+'年' + month+'月'+date+'日'    //得到现在的年月日
</script>

</body>

在这里插入图片描述

(二)JS的windows对象(计时器)

(1)JS计时器

setTimeout(执行的事件,秒数) ---------延迟计时器 只执行一次
setInterval(执行的事件,秒数) ---------间隔计时器 重复执行
①延迟计时器

<body>
<script>
    a = 0
    b = 0

    // 延迟计时器 只执行一次
    setTimeout(function () {
        a++
        console.log(a)
    },2000)  //单位2000毫秒
</script>
</body>

②间隔计时器

<body>
<script>
    a = 0
    b = 0

    // 间隔计时器 重复执行
    setInterval(function () {
        b++
        console.log(b)
    },2000)  //单位2000毫秒

</script>
</body>

③计时器停止

<body>
<button id="btn">计时器停止</button>
<script>

    b = 0
    interval = setInterval(function () {
        b++
        console.log(b)
    },2000)  //毫秒

    //清除计时
    // clearInterval()  间隔
    // clearTimeout()  延迟
    btn = document.getElementById('btn')
    btn.onclick = function () {
        //清除计时
        clearInterval(interval)
    }


</script>
</body>

在这里插入图片描述

(2)计时器实现跳转

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>计时器实现跳转</title>
</head>
<body>
<div id="box">
    <span id="timer">5s</span>后跳转到百度
</div>

<script>
    box = document.getElementById('box')
    timer = document.getElementById('timer')
    num = 5

    time = setInterval(function () {
        num--
        timer.innerText = num+'s'
        if (num===1){
            clearInterval(time)  //清除计时
            // window.location.href = 'https://www.baidu.com/'  //从当前窗口跳转到一个新的链接
            //打开新的窗口进行跳转
            // w = window.open()
            // w.location = 'https://www.baidu.com/'

            window.open('https://www.baidu.com/')
        }

    },1000)


</script>

</body>
</html>

在这里插入图片描述

(三)JS的函数

  • JS函数介绍: JS的函数包裹在花括号当中,使用关键词function来定义。函数可以挂载在一个对象上,作为一个对象的属性,称为对象的方法。
  • JS函数特性: 在JS中,函数即对象,程序可以随意操控它们。比如,JS可以把函数赋值给变量,或者作为参数传递给其他的函数,甚至可以设置属性,调用它们的方法。
  • JS有名函数: 有名字的函数,使用时是:函数名加上括号执行,充当时间函数执行。
  • JS匿名函数:没有名字的函数,匿名函数不能单独出现,一般充当事件函数,比如点击事件调用的函数。

(1)有名函数

    有名函数
    function 函数名(参数1,参数2,...) {
        函数体
        return 返回值
    }

例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>计时器</title>
</head>
<body>
<script>
    
    //函数的调用
     function func(x, y) {
        alert(x + y)   //弹窗
        return [x, y]  //返回一个值
    }

    a = func(1, 2)
    console.log(a)  //undefined

    
    // 有名函数可以在定义前调用(即下方的方式)
    // a = func(1, 2)
    // console.log(a)  //输出是undefined
    //
    // function func(x, y) {
    //     alert(x + y)   //弹窗
    //     return [x, y]  //返回一个值
    // }
    
    
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>计时器</title>
</head>
<body>
<script>

    function f1(x,y){
        alert(x+y)
    }

    // 间隔计时器)(每隔2秒弹窗一次)
    setInterval(function () {
        f1(1,2)
    },2000)


</script>
</body>
</html>

(2)匿名函数

    匿名函数:
    变量 =  function (参数1,参数2,...) {
        函数体
        return 返回值
    }
    变量(值1,值2,....)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>计时器</title>
</head>
<body>
<script>

    fa = function (x,y) {
        alert(x + y)
        return [x, y]  //返回一个值
    }

    a = fa(1,2)
    console.log(a);
    
</script>
</body>
</html>

匿名函数不可以在定义前调用

    // 匿名函数自调用  在function前加上+ - ~ !  匿名函数立即执行
    -function () {
        alert(111)
    }();

(3)函数的参数

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>计时器</title>
</head>
<body>
<script>

    //函数的参数
    // 参数xy可以不给值,不会报错,只是返回undefined
    // 多给参数值也不会报错,会自动传给arguments不定长参数
    function func(x, y) {
        // console.log(x);  //undefined
        // console.log(y);  //undefined
        // console.log(arguments); // 输出arguments,元组形式,包括了参数值,函数本身,参数长度,函数类型(迭代器对象)
        // console.log(arguments.callee);  // 函数本身的内容
        // console.log(arguments.length);  // 函数本身的长度
        //arguments是伪数组,不具有数组实际意义上的一些方法,pop,push

        // 循环取出arguments伪数组当中的参数值
        for (i = 0; i < arguments.length; i++) {
            console.log(arguments[i])
        }
    }

    func(1, 2, 3, 4, 5, 6)

</script>
</body>
</html>

在这里插入图片描述

(4)变量声明与函数作用域(JS作用域)

声明:JS定义(声明)一个变量有三种方式 var、 let 、const

①var

<body>
<script>

    // var 声明
    // var可以在同一作用域下多次声明同一变量
    var num = 1;
    var num = 2;
    console.log(num)  //输出为2

    // var定义的变量可以在声明前调用,返回的是undefined
    // console.log(num)  //undefined
    // var num = 1
    // console.log(num)
    
</script>
</body>

②let

<body>
<script>

    // let 声明
    // let不可以在同一作用域下多次声明同一变量
    let num = 1;
    let num = 2;
    console.log(num)   //会报错

    // let定义的变量不可以在声明前调用
    // console.log(num)
    // let num = 1
    // console.log(num)

</script>
</body>

③const

<body>
<script>

    // const声明变量时,必须赋予值,不可以在同一作用域下多次声明同一变量,不可以在声明前调用
    console.log(num)
    const num = 1
    const num = 2
    console.log(num)    //会报错
    

</script>
</body>

作用域:一个变量可以生效的范围。 变量不是在所有地方都可以使用的,而这个变量的使用范围就是我们要说的作用域。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>计时器</title>
</head>
<body>
<script>

    //js作用域
    var a = 11  //    在函数外声明的叫全局变量
    function func() {
        var a = 22  //    在函数内声明的叫局部变量,外部访问不到
        // a = 22  // 如果把var删掉则是全局变量,能够覆盖外面的a

    }
    func()
    console.log(a)  //11  ==>  删掉var结果变为22
    
</script>
</body>
</html>

优先级

<body>
<script>

    // 优先级,变量>函数
    var a = 123

    function a() {
        console.log(321)
    }
    console.log(a) //输出是123  变量优先级大

</script>
</body>

块级作用域{}:针对let和const

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>计时器</title>
</head>
<body>
<script>

    // let和const的块级作用域
    {
        let num = 10
        console.log(num) //10
    }
    console.log(num) //在块级作用域外面无效会报错

    {
        var num = 10
        console.log(num) //10
    }
    console.log(num) //10     块级作用域对var无效
    
</script>
</body>
</html>

(四)JS异常

    js异常
    try{
        可能会出现异常的代码
    }
    catch (e) {
        异常后跳到该作用域下,执行该代码块,e代表错误信息
    }
    finally {
        不管是否异常都会执行的部分
    }

例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>异常</title>
</head>
<body>
<script>

    try{
        num = 1
        console.log(num)
    }
    catch (e) {
        console.log(e)       //异常捕获给e,再通过e输出出来
    }
    finally {
        console.log('异常处理完毕!')
    }

</script>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值