欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

荐 js简单整理

程序员文章站 2022-07-07 20:47:52
初识js1.什么是js2.JS三种写法3.JS的基本语法4.JS中的变量5.JS中的数据类型1.JS中的number数据类型2.JS中的string数据类型3.JS中的boolean数据类型4. JS中的undefined数据类型6.JS中的数据类型转化7. 什么是代码段8.JS代码在执行时分两个阶段9.初步了解执行上下文( Execute Context (EC))10.加var的变量和没有加var的变量的区别11.了解函数1.什么是jsJS:javascript 简称为JS 它是一门编程语言...

1.什么是js

JS:javascript 简称为JS 它是一门编程语言

编程语言分类:
前端语言:JS(浏览器上)…
后端语言:Java C++ Python Go JS C# …
只有合适的场景使用合适的语言。 JS JAVA C++

js能做什么:
1)开发网站
2)开发app
3)小程序
4)游戏开发 小程序游戏 网页游戏
5)写后端 node.js
6)嵌入式 c
7)区块链


<script>
  var a=110;
  var a=200;
  conosle.log("hello world")
</script>

2.JS三种写法

1)把js写在html文件中 学习时通常就写在script标签中(内部写法)
2)把JS写在JS文件中,然后在html文件中通过script标签引入 写项目时通常会把JS写在一个单独的文件中(外部写法)
3)把JS代码写在开始标签中,当成开始标签的属性(行内写法)

行内样式:


<button onclick="console.log(888)">点我</button>

3.JS的基本语法

基本语法:
1)JS是区分大小写 var a = 1; var A = 2;
2)忽略空白符(空格 换行 tab)
3)语句分号可加可不加
4)注释 单行注释 多行注释 注释是给程序员看的
5)标识符 和 关键字 var a = 110; var 关键字 a变量名标识符
6)…

4.JS中的变量

变量:变量就是内存中的一个空间。

变量名:内存空间的别名 对变量名的操作就是对内存空间的操作
变量值:存储在内存空间中的状态(数据)

在JS中,如何定义变量:

var a = 110; // 定义了一个变量 变量的名是a 变量的值是110;

变量的分类:

1)全局变量
2)局部变量
分界点是:函数
只要把变量写在函数里面就是局部变量,只要写在函数外面就是全局变量.

全局变量和局部变量有什么特点:

1)全局变量可以在函数内部都能访问到
2)局部变量只能在函数内部访问到

5.JS中的数据类型

为什么需要数据类型?

为了更加合理使用内存空间,基本上所有的编程语言中都提出数据类型的概念,研究针对不同的数据,分配不同的空间。

JS中的数据类型:

基本数据的类型:

number 数字 var a = 110; int a = 110;
string 字符串 ”“ ‘’ JS中不分字符和字符串 都叫字符串
boolean true false 布尔类型
undefiend 没有值
null 没有值

引用数据类型:

object 对象
array 数组
function 函数 在JS中函数也是一种数据类型

1.JS中的number数据类型

  1. number是一个数据类型,这个数据类型对应的值有无数个。
  2. 在JS中number数据类型是不分整数和小数 都是number
  3. 可以通过typeof查看一个变量值的数据类型
  4. 最大值 和 最小值
  5. number可以通过不同进制显示 进制 10进制 2进制 16进制(以0x打头的) 8进制(以0打头的)
  6. NaN Not a Number 不是一个数字
  7. JS中不要对小数运算 要运算先转成整数 得到的结果往往不对

在JS中,说到数据类型,主要指变量值的数据类型。
typeof是运算符 + - * / 都是运算符
Number叫类,也叫构造器,也叫函数

2.JS中的string数据类型

  1. 在JS中 使用‘’ “”把字符串包起来 不包 JS会给它当成变量
  2. 单引号不要嵌套单引号 双引号不要嵌套双引号 外单内双 外双内单
  3. string数据类型对应的数据有无数个

注:SyntaxError表示语法错误

3.JS中的boolean数据类型

  1. boolean数据类型对应的值就两个 true false
  2. true 和 True 不一样的 JS是区分大小写的

4. JS中的undefined数据类型

  1. undefiend是一个数据类型,这种数据类型对应的值是undefiend
  2. 什么时候会出现undeined?
    答:一个变量没有赋值 它的值是undefiend 这个值的类型是undefiend

6.JS中的数据类型转化

数据类型转化:

隐式类型转化:静悄悄地,不知不觉地就进行了类型转化
强制类型转化:写代码进行转化

在JS中,下面的值转成false,其它值都转成true:

0 -0
“”
undefiend
null

前提:在JS中,运算符两侧需要保存数据类型一致,如果不一致,JS解释器会帮你把一个数据类型转成另一个数据类型。

隐士类型转化

<script>
    var res=123+"abc";
    console.log(res);//123abc
    console.log(typeof res)//string
</script>

注:一个运算符如果有两个操作数,这个运算符叫二元运算符,也叫二目运算符.运算符你要保证两侧操作数的数据类型要一致

强制类型转化

<script>
    console.log(parseInt(3.14));//3把小数转成整数
    console.log(parseInt("3.14abc"))//3 尝试把小数或非数字转成整数
</script>

7. 什么是代码段

一个script标签就是一个代码段。
JS代码在执行时,是一个代码段一个代码段执行。

8.JS代码在执行时分两个阶段

  1. 预编译
  2. 代码执行
    每一个阶段做的事情是不一样的。

预编译: 提升

把加var的变量进行提升 变量声明会提升 变量的赋值是不会提升提升到了代码段最前面把使用function声明的函数进行提升 提升的是整个函数声明

注:定义 = 声明+赋值

9.初步了解执行上下文( Execute Context (EC))

概念:当代码运行时,会产生一个对应的执行环境,在这个环境中,所有变量会被事先提出来(变量提升),有的直接赋值,有的为默认值 undefined,代码从上往下开始执行,就叫做执行上下文。

代码分两类:
全局代码 函数外面的代码叫全局代码
函数代码 一个函数就是一个局部代码

全局执行上下文:
全局代码在执行时时,就会产生全局的EC。 EG(G)
局部执行上下文:
函数代码在执行时,就会产生局部的EC。调用一个函数就产生一个EC,调用100个函数,就产生100个EC。

ECStack 执行上下文栈
EC(G) 全局执行上下文 存储全局的加var 加function的数据存储在VO中
VO 变量对象 存储的全局的加var 或 加function
EC(f) 函数执行上下文 存储局部的加var 或 加funciton的局部数据
AO 活动对象 存储局部的加var 或 加function的局部数据
GO 全局对象
默认情况下,里面就存储了很多东西
全局的数据,加Var的全局数据,加functon的全局数据,不加var的变量都会存储到GO中的

10.加var的变量和没有加var的变量的区别

  1. 在全局代码中,加var会提升,没有var的不会提升。
  2. 不管加没加var的全局变量,都会作为window的属性
  3. 没有加var的变量,只能作为全局变量,只要是全局变量,肯定是window的属性.
  4. 加var的局部变量,不会作为window的属性
    对象 是集合 放一堆的数据 变量里放一个数据
    in是一个运算符 用来判断一个对象有没有一个属性

11.了解函数

  1. 在JS中定义函数有两种形式
    函数定义
    函数表达式
  2. 函数定义
    f叫函数名
    ()是函数特有的标识
    {} 叫函数体
  3. 函数调用
    调用函数时,就会把函数体中的代码都执行了
  4. 函数的返回值
    函数的返回值是返回到了函数调用处
    一个函数如果没有返回值,默认返回undefiend

 <script>
  function f(){
            return 666;
        }
        var a=f();
        console.log(a);//666
        console.log(f())//666
 </script>

  1. 给函数传递数据

<script>
     function f(a,b){//a,b叫做形式参数  形参
        //形参就是函数内部的局部变量
        return a+b;
    }
    var r=f(1,2); //1 2叫实际参数 实参
    console.log(r) //函数调用时就是实参向形参赋值的过程
</script>

12.let和const声明变量

let声明变量

  1. let声明的变量没有提升(let声明的变量也提升,仅仅是没有初始化)
  2. let 配合 {} 也可以形成块级作用域
  3. 使用let声明的变量不会挂载到GO上
  4. 使用let不能重复声明

注:不要使用var来定义变量 使用let声明变量

const声明常量

  1. const也没有提升
  2. 也会形成块级作用域
  3. 使用const声明的常量不会挂载到GO上
  4. 使用const不能重复声明
  5. const在声明常量时,必须赋值

13.堆内存和栈内存的理解

变量存储位置

  1. 栈(stack):栈会自动分配内存空间,会自动释放,存放基本类型,简单的数据段,占据固定大小的空间。(基本类型:String,Number,Boolean,Null,Undefined)

  2. 堆(heap):动态分配的内存,大小不定也不会自动释放,存放引用类型,指那些可能由多个值构成的对象,保存在堆内存中,包含引用类型的变量,实际上保存的不是变量本身,而是指向该对象的指针。(引用类型:Function,Array,Object)

<scirpt>
        var a=10;
        var b=a;
        b=11;
        console.log(a);//10
</scirpt>

<scirpt>
        var a={n:12};
        var b=a;
        b.n=13;
        console.log(a.n);//{n:13}
</scirpt>

<scirpt>
        var a={m:666};
        var b=a;
        b={m:888};//在这里,堆有创建了一个新的地址储存m:888;
        console.log(a,m);//{m:666}
</scirpt>

注:第一个代码在栈中改变了b的值而未改变a的值
第二个代码是b没有创建新的地址堆,在堆中改变了a与b共同地址中的值
第三个代码是b创建了一个新的地址堆,没有改变a的值
第一个是基本数据类型,存入了栈中
第二个和第三个是引用数据类型,存入了地址堆中

内存分配

一般来说栈内存线性有序存储,容量小,系统分配效率高。而堆内存首先要在堆内存新分配存储区域,之后又要把指针存储到栈内存中,效率相对就要低一些了。

垃圾回收

垃圾回收方面,栈内存变量基本上用完就回收了,而推内存中的变量因为存在很多不确定的引用,只有当所有调用的变量全部销毁之后才能回收

本文地址:https://blog.csdn.net/kaniboy/article/details/107371213

相关标签: js