javaScript你不知道的闲杂知识

Posted 火腿肠烧烤大赛冠军

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javaScript你不知道的闲杂知识相关的知识,希望对你有一定的参考价值。

页面端的js避免延迟

有些需要很久的js引入时,尽量放在下面(有可能因为加载这个文件导致渲染延迟)

前端访问的基本流程

在这里插入图片描述

注释与执行符

  1. //

  2. /*
    */

  3. ;尽量加上 或者下载一个插件

变量解析过程以及变量提升

js代码执行之前会预先将代码预解析一遍

       var web = "hdcms";

包含两个过程

      var web;
      web = "hdcms";

在浏览器执行之前会预先加载第一步(无论程序将是否执行)
例如:

if(false){
var sam = 1;
}

一就会执行第一句 var sam;

ps:其实这是不好的

let const暂时性死区TDC

声明必须在使用之前

{
块儿及作用域
ok
}
找的时候有就用 没有会依次向上级寻找

全局污染

之前代码js文件堆在一起(之前遇到过);
变量极其混乱 很恶心

块作用域

  1. for中的i有块级作用域不会污染全局
  2. 不同的js文件使用let不会冲突
  3. 解决立即执行函数(立即执行,通过函数中的方法来导出变量)来防止全局污染的问题
    例如:
    {
    let a=1;
    }
    外面就访问不到了

cosnt探究

const a = 123;
a = 3456;
这样是不可以的
但是
const b = {};
b.a = 123;
这样是可以的

  1. 所以说const是锁定了指针的方向,该指针内部的东西无所谓
  2. const仅限于一个块作用域内(因为并不是同一个作用域)

window全局对象污染的声明

  1. 全局作用域下var声明的对象会放到window下
  2. let定义的不会与window之间内部的变量冲突
  3. 重复声明var用下面的 let会提示

Object.freeze冻结变量

‘use strict’
let a = {b:123};
Object.freeze(a);
之后a如何改变都不会改变 建议使用严格模式

传值和传址

爸爸把车钥匙给了儿子是传址
爸爸直接给了儿子买新车是传值

null和undefined

一开始只有null没有undefined
null:本来打算保存引用类型
undefined:本来打算保存基本类型
函数没有返回值为undefined也包括没有参数使用了
typeof没有值为undefined(未声明)

严格模式

  1. 关键词不允许 报错
  2. 变量互相干扰不允许 报错
  3. 作用域:当前作用域向下(和变量相同)
  4. 禁止用大括号代替{a,b}={}解构语法

以上是关于javaScript你不知道的闲杂知识的主要内容,如果未能解决你的问题,请参考以下文章

你不知道的JavaScript(下卷 )pdf

你不知道的JavaScript(上中下)全册

JavaScript模块知识理解

《你不知道的JavaScript》三卷读后感

《你不知道的 JavaScript 上卷》 学习笔记

你不知道的Javascript:有趣的setTimeout