js 字符串删除首尾_js知识点复习

本文介绍了JavaScript的基础数据类型、内存管理、引擎工作原理及基本语法等内容,包括闭包、原型、类与继承等概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JS七种数据类型

  1. number 数字 2. String 字符串 3. null 空 4. undefined 空 5. bool 布尔值 6. symbol 符号 7. Object

概念:

  1. 闭包、原型 2. 类、继承 3. MVC、Flux 4. 高阶函数 5. 前端工程化

内存图与JS世界

一切都在内存里运行

浏览器的功能

发起请求 下载HTML,解析HTM,下载CSS,解析CSS,渲染界面,下载JS,解析JS,执行JS等。

功能模块: 用户界面、渲染引擎、JS引擎、储存等@!

功能模块一般处于不同的线程(比进程更小),如果进程是轴,那么线程就是车间里的流水线。

JS引擎

chrome用的是V8引擎,c++缩写

网景用的是SpiderMonkey,后被Firefox使用,C++

Safari用的是JavaScriptCore

IE用的是Chakra(JScript9)

Edge用的是chakra(Jscript-javascript)

功能:

  1. 编译: 把JS代码翻译为机器能执行的字节码或者机器码
  2. 优化: 改写代码,实其代码更高效
  3. 执行: 执行上面的字节码或者机器码
  4. 垃圾回收: 把JS用完的内存回收,更方便之后再次使用。

执行js代码

准备工作:

♥1. 提供API: window / document/ setTimeout

这些东西都不是JS自身具备的功能,我们将这些功能称为运行环境runtime.env,一旦把JS放进页面,就开始执行JS

JS代码在哪里运行呢???

答: JS代码在内存里运行。

| 红色区 |

系统进程渲染线程不知道什么区Stack栈Heap堆
OSchrome用户界面a
辅助进程JS引擎b连续储存随机储存
Tab1代码区
var a =1
c
Tab2var b =1

红色区 Stack 栈 和 Heap堆

为什么叫 Stack栈 和 Heap堆呢?

Stack栈的特点: 每个数据顺序存放

Heap堆的特点: 每个数据随机存放

Stack和 Heap 举例

var a = 1
var b = 1
var person = { name: 'frank', child: {name: 'jack'}}
var person2 = person

规律:

数据分为两种: 非对象和对象

非对象存放在Stack栈中 对象存放在Heap堆中

二号总是把右边的东西复制给左边,不存在上面传值和地址。

对象:数组、函数是对象

非对象: 数字、字符串、布尔值不是对象

原型图:

2e3ddc705f68fca402b8e06cf49f184a.png

JS版本:

ES6是最低要求。

历史版本:

  1. ES3,IE6 支持总体评价--垃圾
  2. ES5,总体评价还是--垃圾
  3. ES6,大部分浏览器支持,一部分垃圾,一部分好
  4. ES2019 与 ES6差别不大

为什么说ES6一半垃圾,一半好呢。

答:因为ES6不能删除以前的特性,要兼容旧网站,也就是说以前运行的网站,以后也要运行。

JS 语法

表达式、语句

  1. 表达式: 1+2 的表达式的值 为 3 add(1,2) 表达式的值是函数的返回值
  2. console.log 表达式的值是函数本身
  3. console.log(2), 表达式的值 为undefined , 打印出来的东西为2

1. 语句 var a = 1 是一个语句

两者的区别:

  1. 表达式一般都有值,语句可能有也可能没有
  2. 语句一般会改变环境 声明,赋值
  3. 上面的两句话不是绝对的

大小写要敏感

  1. var a 和 var A 是不一样的
  2. object 和 Object 是不用的
  3. function 和 Function 是不同的

空格: 大部分空格是没有实际意义的

var a=1 和 var a= 1 是没区别的

只有 return 后面加空格会有影响的

标识符

  1. 第一个字符,可以是Unicode字母或者$或者_或者中文 不能以数字开头
  2. 后面的字符,除了上面说的,还可以是 数字

变量名是标识符

var _ = 1
var $ = 1
var ______ = 6
var 你好 = 'hi'

// 还有其他的标识符用到在说

注释的分类

  1. 不好的注释:把代码翻译成中文,过时的注释,发泄不满的注释
  2. 好的注释:踩坑的注释警告大家,遇到什么BUG的解决办法的注释

区块block

把代码打包: {

   let a = 1 
   let b = 2
}

常常与if/ for / while 合用

if语句: 如果...那么...

语法:

if(表达式){
 语句1
}else {
 语句2
}
// {} 在语句只有一句的时候可以省略,不建议这么写

变态情况

a = 2
if(a === 2) {
 console.log('a')
 console.log('a等于2')
}
// undefined

推荐的if写法

if(表达式){
 语句1
}else if(表达式){
 语句2
}else {
 语句3
}

switch 语句

switch (fruit) {
 case 'banana'
 break;
 case 'apple'
 break;
 default;
}

问号冒号表达式

条件?表达式1:表达式2

如果条件为真返回表达式1,假返回2

function max(a,b) {
 return a>b? a : b
} // 如果 a大于b  那么就返回a 否则返回 b

&& 短路运算符

&& : A&&b

BB
&&
ABB
AAA

第一个为真,则返回第二个值

第一个为假,则返回第一个值

|| 短路运算符

||: A||B

BB
||
AAA
ABB

第一个值为真,则返回第一个值

第一个值为假,则返回第二个值

while循环 当...时...

语法: while(表达式){
  语句
}
let a =0;
while(a < 10) {

  console.log(a)
  a++
} // 先从开始打印到9停止

for 循环

语法糖 for是while 循环的方便写法

语法 for(初始化表达式; 条件; 递增表达式) {
   循环体
}
let a = 5;
for(var i = 0; i < a; i++) {
 console.log(i)
} // 打印出 0,1,2,3,4 输出的结构是 undefined

先执行初始化表达式,然后判断条件,如果为真执行循环体然后在执行递增表达式

break 和 continue 的区别

break 在 相等的情况下 后面的不执行

continue 在相等的情况下 跳过此环节 执行后面的循环

for(var i=0; i<5; i++){

 console.log(i);
 if( i ===3){
 break; // 等于3的时候停止循环
}
}

for(var i = 0; i < 10; i++) {
 if(i === 3 ) {
 continue; // i等于3的时候就略过
}
console.log(i)
}

label 代码块

语句: 
foo: {
 console.log(1);
 break foo;
console.log('本行不输出')
}
console.log(2)
// 输出结果是 1 2


{
 foo: 1  //  是个对象
 foo: 2; //  是个2
}

数据类型和运算符

数字与字符串

数字是数字,字符串是字符串, 要严谨 1 和 '1'是不一样的。

数字能加减乘除,而字符串不行。

字符串可以表示电话号码,数字却不行。

储存的形式不同:js中数字是用64位浮点数的形式存储的。JS中字符串是用类似UTF-8形式村塾的(UCS-2).

JS中的数据类型:

一共七种: 数字 Number 字符串 String 布尔bool 符号 symbol 空 undefined 空 null 对象 Object

四基两空一对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值