JavaScript基础总结

发布于:2023-02-14 ⋅ 阅读:(640) ⋅ 点赞:(0)

系列文章目录 

  js基础总结第二篇

  js基础总结第三篇

  js基础总结第四篇

前言

一、 JavaScript书写方式

 1,行内式:写在标签内部。

 2,内嵌式(内联式):写在 head 标签中。

 3,外链式:引入外部 JS 文件。

二、常量和变量

1,数字常量(数值常量)

2,字符串常量

3,布尔常量

4,自定义常量

三、标识符、关键字、保留字

标识符:

关键字:

保留字:

四、变量的数据类型:基本数据类型和引用数据类型

数据分类

#静态数据

#动态数据

JS 中一共有八种数据类型

基本数据类型(值类型):

栈内存和堆内存:

引用数据类型:

五、基本数据类型:String 和 Boolean

字符串:String 

布尔值:Boolean

转义字符:

在字符串中我们可以使用\作为转义字符,当表示一些特殊符号时可以使用\进行转义。

六、基本数据类型:Number, Null 和 Undefined

#数值型:Number

Null:空对象

undefined:未定义类型

#case1:变量已声明,未赋值时

case2:变量未声明(未定义)时

函数无返回值时

函数无返回值时

七、typeof和数据类型转换

变量的数据类型转换:

通常有三种形式的类型转换:

typeof 运算符

typeof 的代码写法    返回结果

变量的类型转换的分类

类型转换分为两种:显式类型转换、隐式类型转换。

八、运算符

JS 中的运算符,分类如下:

算数运算符

自增和自减

一元运算符

逻辑运算符

赋值运算符

比较运算符

三元运算符

三元运算符也叫条件运算符。

代码块

if 语句

2、条件分支语句

3、if 语句的嵌套

九、流程控制语句:循环结构(for和while)

循环语句:通过循环语句可以反复的执行一段代码多次。

do...while 循环

十、面向对象

简介:

对象的概念

为什么需要对象

对象的分类

1.内置对象:

2.宿主对象:

3.自定义对象:

总结


前言

                                                                  JavaScript介绍
HTML:从语义的角度,描述页面结构

CSS:从审美的角度,描述样式(美化页面)

JavaScript(简称 JS):从交互的角度,描述行为(实现业务逻辑和页面控制)

JavaScript 既是前端语言,又是后端语言
当 JavaScript 运行在用户的终端网页,而不是运行在服务器上的时候,我们称之为“前端语言”。前端语言是服务于页面的显示和交互,不能直接操作数据库。
后端语言是运行在服务器上的,比如 Java、C++、PHP 等等,这些语言都能够操作数据库(对数据库进行“增删改查”),并在后台执行各种任务。
另外,Node.js 是用 JavaScript 开发的,我们也可以用 Node.js 技术进行服务器端编程。

#JavaScript 的组成

JavaScript 基础分为三个部分:

ECMAScript:JavaScript 的语法标准。包括变量、表达式、运算符、函数、if 语句、for 语句等。

DOM:Document Object Model(文档对象模型),JS 操作页面上的元素(标签)的 API。比如让盒子移动、变色、改变大小、轮播图等等。

BOM:Browser Object Model(浏览器对象模型),JS 操作浏览器部分功能的 API。通过 BOM 可以操作浏览器窗口,比如弹框、控制浏览器跳转、获取浏览器分辨率等等。

通俗理解就是:ECMAScript 是 JS 的语法;DOM 和 BOM 是浏览器运行环境为 JS 提供的 API。


一、 JavaScript书写方式

  1,行内式:写在标签内部。

 <input type="button" value="点我点我" onclick="alert('Hello')" />

   2,内嵌式(内联式):写在 head 标签中。

 在 HTML 页面的 <body> 标签里放入<script type=”text/javascript”></script>标签

3,外链式:引入外部 JS 文件。

       依然是放到 body 标签里,可以和内嵌的 JS 代码并列。
  script 标签已经引入了外部 JS 文件,所以这个标签里面,不可以再写 JS 代码。

<script src="utils.js"></script>

二、常量和变量

 1,数字常量(数值常量)

直接写数字就行,不需要任何其他的符号。既可以是整数,也可以是浮点数

// 不需要加引号
alert(996); // 996是整数
alert(3.14); // 3.14是浮点数(即带了小数)

2,字符串常量

     字符串常量就是用单引号或双引号括起来的内容。可以是单词、句子等,一定要加引号。
在JS中,只要是单引号或双引号括起来的内容,都是字符串常量。

console.log('996');

3,布尔常量

布尔常量就是表达真或者假,在JS中用 true 和 false 来表达。

if (true) {
	console.log('如果为真,就走这里面的代码);
}

4,自定义常量

const
自定义常量是ES6中新增的语法。

const 常量名称 = 常量取值;

三、标识符、关键字、保留字

标识符:


在 JS 中所有的可以由我们自主命名的都可以称之为标识符。包括:变量名、函数名、属性名、参数名都是属于标识符。
必须遵守:
只能由字母(A-Z、a-z)、数字(0-9)、下划线(_)、美元符( $ )组成。
不能以数字开头。必须以字母(A-Z、a-z)、下划线(_)或者美元符( $ )开头。变量名中不允许出现空格。尤其注意,变量名中不能出现中划线-,很多人写了多年代码都不知道这一点,让人大跌眼镜。
严格区分大小写(JS 是区分大小写的语言)。
不能使用 JS 语言中保留的「关键字」和「保留字」作为变量名。
变量名长度不能超过 255 个字符。

关键字:


被JS赋予了特殊含义的单词。也就是说,关键字是 JS 本身已经使用了的单词,我们不能再用它们充当变量名、函数名等标识符。关键字在开发工具中会显示特殊的颜色。
JS 中的关键字如下:
if、else、switch、break、case、default、for、in、do、while、

var、let、const、void、function、continue、return、

try、catch、finally、throw、debugger、

this、typeof、instanceof、delete、with、

export、new、class、extends、super、with、yield、import、static、

true、false、null、undefined、NaN


保留字:


实际上就是预留的“关键字”。它们虽然现在还不是关键字,但是未来可能会成为关键字。同样不能用它们当充当变量名、函数名等标识符。
enum、await

abstract、boolean、byte、char、double、final、float、goto、int、long、native、short、synchronized、transient、volatile、

arguments eval Infinity

# 以下关键字只在严格模式中被当成保留字,在ES6中是属于关键字
implements、interface、package、private、protected、public

四、变量的数据类型:基本数据类型和引用数据类型


数据分类


数据分为:静态数据、动态数据。

#静态数据


静态数据是指一些永久性的数据。一般是以文件的形式存储在硬盘上,比如文档、照片、视频等文件。
电脑关闭后,静态数据仍然还在。只要不主动删掉数据或者硬盘没损坏,这些数据就一直都在。

#动态数据


动态数据是在程序运行过程中,动态产生的临时数据,这些数据可能随时发生变化。一般存储在内存中。
电脑关闭后,这些数据会被清除。为何不把应用程序的动态数据加载到硬盘中执行呢?这主要是因为,内存的访问速度比硬盘快无数倍。

JS 的变量数据类型,是在程序运行的过程中,根据等号右边的值来确定的。而且,变量的数据类型是可以变化的。比如说:

var name = 'yifeng';
name = 123; // 强制将变量 name 修改为 数字类型

JS 中一共有八种数据类型

基本数据类型(值类型):

String 字符串、Number 数值、BigInt 大型数值、Boolean 布尔值、Null 空值、Undefined 未定义、Symbol。
引用数据类型(引用类型):Object 对象。
注意:内置对象 Function、Array、Date、RegExp、Error 等都是属于 Object 类型。也就是说,除了那七种基本数据类型之外,其他的,都称之为 Object 类型。
基本数据类型:参数赋值的时候,传数值。
引用数据类型:参数赋值的时候,传地址。


栈内存和堆内存:


我们首先记住一句话:JS 中,所有的变量都是保存在栈内存中的。

然后来看看下面的区别。
基本数据类型:
基本数据类型的值,直接保存在栈内存中。值与值之间是独立存在,修改一个变量不会影响其他的变量。

引用数据类型:

对象是保存到堆内存中的。每创建一个新的对象,就会在堆内存中开辟出一个新的空间;
而变量保存了对象的内存地址(对象的引用),保存在栈内存当中。如果两个变量保存了同一个对象的引用,当一个通过一个变量修改属性时,另一个也会受到影响。
 

五、基本数据类型:String 和 Boolean


字符串:String 


字符串型可以是引号中的任意文本,其语法为:双引号 "" 或者单引号 ''。
var a = 'abcde';
console.log(typeof a);
控制台输出如下:
string

布尔值:Boolean


布尔型有两个值:true 和 false。主要用来做逻辑判断: true 表示真,false 表示假。

var a = true;
console.log(typeof a);
控制台输出结果:
boolean

转义字符:

在字符串中我们可以使用\作为转义字符,当表示一些特殊符号时可以使用\进行转义。

\" 表示 " 双引号

\' 表示 ' 单引号

\\ 表示\

\r 表示回车

\n 表示换行。n 的意思是 newline。

\t 表示缩进。t 的意思是 tab。

\b 表示空格。b 的意思是 blank。

获取字符串的长度
通过字符串的 length 属性可以获取整个字符串的长度。
console.log(str1.length);

字符串拼接
多个字符串之间可以使用加号 + 进行拼接。
 

六、基本数据类型:Number, Null 和 Undefined

#数值型:Number


在 JS 中所有的数值都是 Number 类型,包括整数和浮点数(小数)。

Null:空对象


       null 专门用来定义一个空对象。例如:let a = null,又例如 Object.create(null).如果你想定义一个变量用来保存引用类型,但是还没想好放什么内容,可以在初始化时将其设置为null。
你可以把 null 理解为:null 虽然是一个单独的数据类型,但null 相当于是一个 object,只不过地址为空(空指针)而已。

undefined:未定义类型


#case1:变量已声明,未赋值时


声明了一个变量,但没有赋值,此时它的值就是 undefined

case2:变量未声明(未定义)时


如果你从未声明一个变量,就去使用它,则会报错;
此时,如果用 typeof 检查这个变量时,会返回 undefined。

函数无返回值时


如果一个函数没有返回值,那么,这个函数的返回值就是 undefined。
或者,也可以这样理解:在定义一个函数时,如果末尾没有 return 语句,那么,其实就是 return undefined

函数无返回值时


如果一个函数没有返回值,那么,这个函数的返回值就是 undefined。
或者,也可以这样理解:在定义一个函数时,如果末尾没有 return 语句,那么,其实就是 return undefined。

七、typeof和数据类型转换


变量的数据类型转换:

将一种数据类型转换为另外一种数据类型。

通常有三种形式的类型转换:

转换为字符串类型
转换为数字型
转换为布尔型


typeof 运算符

typeof()表示“获取变量的数据类型”,它是 JS 提供的一个操作符。返回的是小写,语法为:(两种写法都可以)

// 写法1
typeof 变量;

// 写法2
typeof(变量);

typeof 这个运算符的返回结果就是变量的类型。返回结果的类型是字符串。

typeof 的代码写法    返回结果


typeof 数字    number
typeof 字符串    string
typeof 布尔型    boolean
typeof 对象    object
typeof 方法    function
typeof null    object
typeof undefined    undefined

变量的类型转换的分类


类型转换分为两种:显式类型转换、隐式类型转换。

#显式类型转换
toString()

String()

Number()

parseInt(string)

parseFloat(string)

Boolean()

#隐式类型转换
isNaN ()

自增/自减运算符:++、—-

正号/负号:+a、-a

加号:+

运算符:-、*、/

#隐式类型转换(特殊)
逻辑运算符:&&、||、! 。非布尔值进行与或运算时,会先将其转换为布尔值,然后再运算。&&、||的运算结果是原值,!的运算结果为布尔值。

关系运算符:<、> <= >=等。关系运算符,得到的运算结果都是布尔值:要么是 true,要么是 false。
 

八、运算符

JS 中的运算符,分类如下:

算数运算符

自增/自减运算符

一元运算符

逻辑运算符

赋值运算符

比较运算符

三元运算符(条件运算符)

算数运算符


算术运算符:

用于执行两个变量或值的算术运算。
常见的算数运算符有以下几种:

运算符    描述
+    加、字符串连接
-    减
*    乘
/    除
%    获取余数(取余、取模)

自增和自减


自增 ++
自增分成两种:a++和++a。

(1)一个变量自增以后,原变量的值会立即自增 1。也就是说,无论是 a++ 还是++a,都会立即使原变量的值自增 1。

(2)我们要注意的是:a是变量,而a++和++a是表达式。

那这两种自增,有啥区别呢?区别是:a++ 和 ++a的值不同:(也就是说,表达式的值不同)

a++这个表达式的值等于原变量的值(a 自增前的值)。你可以这样理解:先把 a 的值赋值给表达式,然后 a 再自增。

++a这个表达式的值等于新值 (a 自增后的值)。 你可以这样理解:a 先自增,然后再把自增后的值赋值给表达式。

#自减 --
原理同上。
开发时,大多使用后置的自增/自减,并且代码独占一行,例如:num++,或者 num--。

一元运算符


一元运算符,只需要一个操作数。
正号+
不会对数字产生任何影响
负号 -
负号可以对数字进行取反。

逻辑运算符


逻辑运算符有三个:

&& 与(且):两个都为真,结果才为真。

|| 或:只要有一个是真,结果就是真。

! 非:对一个布尔值进行取反。

注意:能参与逻辑运算的,都是布尔值。

赋值运算符


赋值:将符号右侧的值赋给符号左侧的变量。

#赋值运算符包括哪些
= 直接赋值。比如 var a = 5。意思是,把 5 这个值,往 a 里面存一份。简称:把 5 赋值给 a。

+=。a += 5 等价于 a = a + 5

-=。a -= 5 等价于 a = a - 5

*=。a _ = 5 等价于 a = a _ 5

/=。a /= 5 等价于 a = a / 5

%=。a %= 5 等价于 a = a % 5

比较运算符


比较运算符可以比较两个值之间的大小关系,如果关系成立它会返回 true,如果关系不成立则返回 false。
非数值的比较
对于非数值进行比较时,会将其转换为数字然后再比较。
特殊情况:如果符号两侧的值都是字符串时,不会将其转换为数字进行比较。比较两个字符串时,比较的是字符串的Unicode 编码。【非常重要,这里是个大坑,很容易踩到】
注意==这个符号,它是判断是否等于,而不是赋值。
===全等符号的强调
全等在比较时,不会做类型转换。如果要保证绝对等于(完全等于),我们就要用三个等号===

console.log('6' === 6); //false
console.log(6 === 6); //true


上述内容分析出:

==两个等号,不严谨,"6"和 6 是 true。

===三个等号,严谨,"6"和 6 是 false。

另外还有:==的反面是!=,===的反面是!==


三元运算符


三元运算符也叫条件运算符。

语法:
条件表达式 ? 语句1 : 语句2;

执行的流程:
条件运算符在执行时,首先对条件表达式进行求值:

如果该值为 true,则执行语句 1,并返回执行结果

如果该值为 false,则执行语句 2,并返回执行结果

如果条件的表达式的求值结果是一个非布尔值,会将其转换为布尔值然后再运算。

流程控制语句:选择结构(if和switch)

代码块


用{}包围起来的代码,就是代码块。

流程控制语句分类:
顺序结构
选择结构:if 语句、switch 语句
循环结构:while 语句、for 语句

顺序结构
按照代码的先后顺序,依次执行

if 语句


if 语句有以下三种。

1、条件判断语句
条件成立才执行。如果条件不成立,那就什么都不做。

格式:

if (条件表达式) {
    // 条件为真时,做的事情
}

2、条件分支语句


格式 1:

if (条件表达式) {
    // 条件为真时,做的事情
} else {
    // 条件为假时,做的事情
}

格式 2:(多分支的 if 语句)

if (条件表达式1) {
    // 条件1为真时,做的事情
} else if (条件表达式2) {
    // 条件1不满足,条件2满足时,做的事情
} else if (条件表达式3) {
    // 条件1、2不满足,条件3满足时,做的事情
} else {
    // 条件1、2、3都不满足时,做的事情
}

3、if 语句的嵌套


switch 语句(条件分支语句)
switch 语句也叫条件分支语句。
switch(表达式) {
    case 值1:
        语句体1;
        break;

    case 值2:
        语句体2;
        break;

    ...
    ...

    default:
        语句体 n+1;
        break;
}
解释:switch 可以理解为“开关、转换” 。case 可以理解为“案例、选项”。

switch 语句的执行流程
执行流程如下:

(1)首先,计算出表达式的值,和 case 依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到 break 就会结束。

(2)然后,如果所有的 case 都和表达式的值不匹配,就会执行 default 语句体部分。

九、流程控制语句:循环结构(for和while)


循环语句:通过循环语句可以反复的执行一段代码多次。


for (var i = 1; i <= 100; i++) {
    console.log(i);
}

while 循环语句
语法:

while(条件表达式){
    语句...
}

如果有必要的话,我们可以使用 break 来终止循环。

do...while 循环


语法:

do{
    语句...
}while(条件表达式)


while 循环和 do...while 循环的区别
这两个语句的功能类似,不同的是:

while 是先判断后执行,而 do...while 是先执行后判断。
也就是说,do...while 可以保证循环体至少执行一次,而 while 不能。

十、面向对象


简介:


面向对象:可以创建自定义的类型,很好的支持继承和多态。

面向对象的特征:封装、继承、多态。

对象的概念


在 JavaScript 中,对象是一组无序的相关属性和方法的集合。

对象的作用是:封装信息。比如Student类里可以封装学生的姓名、年龄、成绩等。

对象具有特征(属性)和行为(方法)。

为什么需要对象


保存一个值时,可以使用变量,保存多个值(一组值)时,可以使用数组。

var person = {};

person.name = '王二';
person.age = 35;
person.sex = '男';
person.height = '180';

对象的分类


1.内置对象:

由ES标准中定义的对象,在任何的ES的实现中都可以使用

比如:Object、Math、Date、String、Array、Number、Boolean、Function等。

2.宿主对象:

由JS的运行环境提供的对象,目前来讲主要指由浏览器提供的对象。

比如 BOM DOM。比如console、document。

3.自定义对象:

由开发人员自己创建的对象
通过 new 关键字创建出来的对象实例,都是属于对象类型,比如Object、Array、Date等。


总结

 干就完了!


网站公告

今日签到

点亮在社区的每一天
去签到