当前位置: 首页 > article >正文

JS后盾人--再一次的走进JS?

 程序跑起来与避免延迟

如果你讲JS,你就不可能只讲JS

后盾人说开发就要用VScode(确实,Windows和Linux都可以跑)

然后就是第一天开发的时候装的那些插件

前端访问流程基本分析

托管到服务器上的东西,谁访问下载到谁的电脑里

就是如此简单。。


体验解析过程与变量提升

解析器在执行之前会先做变量的提升

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        function hd() {
            if (false) {
                var web = "houdunren.com"
            }
            console.log(web)
        }
    </script>
</body>

</html>

比如这个代码,虽然web看上去毫无作用,但是你注释掉会报错,这就是因为有变量提升的存在

let&const暂时性死区TDC

如果使用let或者const来声明变量那会产生一个暂时性死区TDC(言下之意就是不能在声明变量之前使用变量),帮助我们让代码更加的合理(对声明的保护)


 var-let-const的共同点

主要涉及的就是作用域(变量的作用域,先局部后全局)

可怕的全局污染

有的人不好好声明,可以加上这个让它强制声明:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        "use strict"
        mu = 777
    </script>
</body>
</html>


 

主要就是不要定义太多的全局变量,容易造成一些污染



块作用域这个先进的特性

 这是块作用域的一些应用:

(function(){    //立即执行函数,控制作用域,避免发生污染
    var $ = (window.$ = {})     //开放接口出去
    $.web = "hdcms"
    var url = "hdcms.com"
    $.getUrl = function(){
        return url
    }
}.bind(window)())

使用let或者const就可以有块作用域,优点就是不会影响先前定义的一些变量的值

const常量声明一探究竟

如果仅仅是这样函数是不会报错的,因为受限于作用域

const针对的标量不可以改变,但是引用类型是可以改变的

封装到块里面就又不会报错了


window全局对象污染与重复声明

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        let screenLeft = 88 
        console.log(window.screenLeft)      //window对象里面的值没有被改变,如果使用var就会被改变
    </script>
</body>
</html>

 这是window的全局对象,window对象保存着窗口的一些信息

针对var的重复声明,系统是不会报错的


Object.freeze冻结变量

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        const HOST = {
            url:"baidu.com",
            prot:443
        }
        HOST.prot = 80
        console.log(HOST)
    </script>
</body>
</html>

这种情况变量的值是可以被改变的

我们可以使用Object的静态方法将其冻结,这样它的值就不会改变了

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        const HOST = {
            url:"baidu.com",
            prot:443
        }
        Object.freeze(HOST)
        HOST.prot = 80
        console.log(HOST)
    </script>
</body>
</html>


标量与引用类型的传值与传址特性

老生常谈的传值调用和传址调用


null与undefined详解

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        //null   undefined
        let config = {}
        let web = ""
        function show(name){
            console.log(name)
        }
        console.log(show())
    </script>
</body>
</html>

use strict严格模式高质量代码守卫 

这不就是之前说的那个吗,不说了

使用严格模式就对啦!


http://www.kler.cn/a/504284.html

相关文章:

  • FLASK 上传文件
  • 机器学习头歌(第三部分-强化学习)
  • 深度学习中的学习率调度器(scheduler)分析并作图查看各方法差异
  • 【Elasticsearch复合查询】
  • Maven 在尝试连接到 Maven Central 仓库超时的解决方案和排查步骤
  • EasyExcel - 行合并策略(二级列表)
  • STM32程序发生异常崩溃时,怎样从串口输出当时的程序调用栈等信息
  • LangChain学习笔记2 Prompt 模板
  • 21_Spring Boot缓存注解介绍
  • 【Go】Go Gin框架初识(一)
  • 从零开始:在服务器上部署大模型并集成到 vscode +Cline使用
  • LLaMa-3 8B + 蒙特卡洛树 约等于 GPT-4
  • 常用的前端4种请求方式
  • 《拉依达的嵌入式\驱动面试宝典》—Linux篇(二)_uboot
  • RocketMQ 知识速览
  • PySide6的资源文件(.qrc 文件)简介以及RCC工具
  • ssm旅游攻略网站设计+jsp
  • 深入理解循环神经网络(RNN):原理、应用与挑战
  • springCloud特色知识记录(基于黑马教程2024年)
  • Android SystemUI——服务启动流程(二)
  • excel按行检索(index+match)
  • 利用Python爬虫获取item_search_shop-获得店铺的所有商品API接口
  • AI时代来了,我们不再需要IDE了
  • C语言进阶-2指针(一)
  • 智能网联汽车技术底盘线控技术
  • python发送get请求与post请求