JS混淆概念记录

53 阅读4分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 2 天

更多的扩展ES(ECMAScript),才能最大发挥JS的作用。 方法外面用双引号,里面就要用单引号,外面用单引号,里面就要用双引号。

在JS中多个空格和换行会被忽略

var声明的变量没有块作用域(全局变量)

变量没有类型,值有类型,typeof检查的是值的类型。

JS是弱类型的语言(有自动的类型转换),当进行运算时会通过自动的类型转换来完成运算

显式转换(直接用方法),隐式转换(使用运算符)

注意比较两个字符串格式的数字时一定要进行类型转换

对象就是容器

每次调用函数时,都会产生一个新的函数作用域,他们之间互不影响

  • 使用var声明的变量,它会在所有代码执行前被声明   所以我们可以在变量声明前就访问变量
  • 使用函数声明创建的函数,会在其他代码执行前被创建 所以我们可以在函数声明前调用函数
  • let声明其实也会提升,只是在赋值前被解释器禁止访问 箭头函数中的this比较稳定,这也是箭头函数的存在意义。 正常模式,严格模式。 抽象是指将对象的特点给抽象出来,而不是把对象的所有部分都写出来 JS中不会检查参数的类型 多态:如果一个东西走路像鸭子,声音也像鸭子,那他就是鸭子。

有些对象有相同的功能时,多态就发挥了作用。

  1. 封装 —— 安全性
  2. 继承 —— 扩展性
  3. 多态 —— 灵活性

最好不要直接给prototype去赋值,同时,不建议修改原型

闭包函数的外部函数一定需要返回值,且返回值为闭包函数

闭包在外部函数调用时产生,外部函数每次调用都会产生一个全新的闭包

凡是有大量this的地方,一定得小心,因为JS类中的this很不稳定

通过arguments,可以不受参数数量的限制更加灵活的创建函数,形参设置为可变参数,实参有多少就计算多少。

解构赋值可以交换两个东西的值

在JS中对象的序列化通常是将一个对象转换为字符串(JSON字符串)

JSON是一个格式非常严格的东西,因为它要用作数据的分享和解析。

在JS中所有的和时间相关的数据都由Date对象来表示

时间戳:自1970年1月1日0时0分0秒到当前时间所经历的毫秒数

字符串其本质就是一个字符数组

正则表达式:计算机通过这个规则来检查一个字符串是否符合规则

DOM (Document Object Model) 凡是在这个类的原型链上存在的对象的属性和方法都可以通过这个类去调 类数组类型不是数组,不能调用数组的方法

子节点不等于元素,而是所有的内容(包含换行的空格)

网页是自上向下加载的,如果将js代码编写到网页的上边,js代码在执行时,网页还没有 加载完毕,这时会出现无法获取到DOM对象的情况

nodelist:结点列表,是一种类数组对象

有一些结构是实时更新的,添加删除操作会实时体现。

如果样式名中含有减号,则需要把样式名修改为驼峰命名法(background-color —>backgroundColor)

事件的冒泡只跟元素的结构有关,跟样式无关

定时器:是把东西加入消息队列,而不是加入调用栈

想让一个东西在一块空间内移动,就给这个东西开启绝对定位,然后给这块空间开启相对定位。

想让默认纵向排列的div横过来,就添加个弹性盒,display:flex