你不知道的 JS

// counter.js
let counter = 10;
export default counter;
// index.js
import myCounter from "./counter";

myCounter += 1;

console.log(myCounter);

引入的模块是 只读 的: 你不能修改引入的模块。只有导出他们的模块才能修改其值。当我们给myCounter增加一个值的时候会抛出一个异常: myCounter是只读的,不能被修改

delete操作符返回一个布尔值: true指删除成功,否则返回false. 但是通过 var, const 或 let 关键字声明的变量无法用 delete 操作符来删除。

name变量由const关键字声明,所以删除不成功:返回 false. 而我们设定age等于21时,我们实际上添加了一个名为age的属性给全局对象。对象中的属性是可以删除的,全局对象也是如此,所以delete age返回true.

2.

var b = 10;
(function b(){
    b = 20;
    console.log(b); 
})();
打印的是 function b(){b=20; console.log(b)};
// 关于作用域 立即执行函数b, 函数变量名称b 的作用域只局限在这个函数内,
// 在非匿名自执行函数中,函数变量为只读状态无法修改;

3 BFC block formatting context

通俗一点来讲,可以把 BFC 理解为一个封闭的大箱子,箱子内部的元素无论如何翻江倒海,都不会影响到外部

只要元素满足下面任一条件即可触发 BFC 特性:

  • body 根元素
  • 浮动元素:float 除 none 以外的值
  • 绝对定位元素:position (absolute、fixed)
  • display 为 inline-block、table-cells、flex
  • overflow 除了 visible 以外的值 (hidden、auto、scroll)

BFC 特性及应用

  1. 同一个 BFC 下外边距会发生折叠( 比如 Margin 重合会折叠)
  2. BFC 可以包含浮动的元素(它将清除浮动)
  3. BFC 可以阻止元素被浮动元素覆盖 (浮动元素会遮盖普通文挡流, 不会遮盖BFC元素 )

Leave a Reply

Your email address will not be published. Required fields are marked *