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

程序跑起来与避免延迟

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

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

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

前端访问流程基本分析

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

就是如此简单。。

体验解析过程与变量提升

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

html 复制代码
<!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的共同点

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

可怕的全局污染

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

html 复制代码
<!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>

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

块作用域这个先进的特性

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

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

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

const常量声明一探究竟

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

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

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

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

html 复制代码
<!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冻结变量

html 复制代码
<!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的静态方法将其冻结,这样它的值就不会改变了

html 复制代码
<!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详解

html 复制代码
<!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严格模式高质量代码守卫

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

使用严格模式就对啦!

相关推荐
liangshanbo121520 分钟前
写好 React useEffect 的终极指南
前端·javascript·react.js
earthzhang20211 小时前
第3讲:Go垃圾回收机制与性能优化
开发语言·jvm·数据结构·后端·性能优化·golang
纵有疾風起2 小时前
C++——类和对象(3)
开发语言·c++·经验分享·开源
Full Stack Developme2 小时前
java.text 包详解
java·开发语言·python
文火冰糖的硅基工坊2 小时前
[嵌入式系统-135]:主流AIOT智能体开发板
开发语言·嵌入式·cpu
_院长大人_3 小时前
el-table-column show-overflow-tooltip 只能显示纯文本,无法渲染 <p> 标签
前端·javascript·vue.js
SevgiliD3 小时前
el-table中控制单列内容多行超出省略及tooltip
javascript·vue.js·elementui
yudiandian20143 小时前
02 Oracle JDK 下载及配置(解压缩版)
java·开发语言
要加油哦~3 小时前
JS | 知识点总结 - 原型链
开发语言·javascript·原型模式
鄃鳕4 小时前
python迭代器解包【python】
开发语言·python