基础JavaScript-第一篇
此学习笔记来自哔哩哔哩尚硅谷
什么是JavaScript
JavaScript诞生于1995年,前身是LiveScript,其实与Java并没有关系,只是同一公司开发,当时作用是用于处理网页中的前端验证,现在一些动态效果也依赖JavaScript。
如今JavaScript已经开源,所以几个公司制订了一个标准命名为ECMAScript.
JS的HelloWorld
实验环境准备
创建一个基本HTML项目
在项目中创建一个html文件
实验过程
JS代码和CSS一样需要使用标签包裹,JS的标签是<script>,输出的内容使用括号()和单/双引号"/'包裹,<script>标签通常写在<head>标签中
1 | <script> |
TIP:JS的执行是由上到下一行行执行的
JS的书写方式
JS的内部书写
1 | <body> |
以上的书写方式知道即可,因为结构与行为耦合了不方便使用,推荐往外部JS文件中书写
JS的外部导入
一个基本的项目中包括有存放js的文件夹,在文件夹下存放新建js文件,再在html文件使用<script>标签引入外部JS文件
1 | <head> |
注意:一旦这行标签引入了外部JS文件,就不能在内部编写代码了,如果需要编写就只能另起一行标签编写
JS的基本语法
- JS严格区分大小写
- JS以英文分号
;结尾(虽然JS的分号是浏览器自动添加,但会消耗资源,而且容易加错分号,所以十分推荐在开发中书写分号) - JS会忽略多个空格和换回,可以用于提高可读写
JS的注释方法
1 | <script> |
JS的字面量和变量
字面量:不可变的,可以直接使用,但通常不会直接使用
变量:用于保存字面量,变量可以任意更改
JS变量使用var声明,同一个变量var只需要使用一次
1 | //多条语句声明 |
JS的标识符
由我们自主命名的称为是标识符
如:变量名、函数名、属性名
标识符的命名规则:
-
标识符中可以含有字母、数字、下划线
_、dollar 符$ -
不能以数字开头
-
不能是JS中的关键字或保留字;如break、if、for等
-
推荐使用驼峰命名法,helloKitty
JS的数据类型
JS中有六种数据类型,1-5是JS的基本类型
- String 字符串
- Number 数值
- Boolean 布尔值
- Null 空值
- Undefined 未定义
- Object 对象
可以使用typeof检查变量类型
1 | var a = 123; |
String字符串
在JS中字符串需要单或双引号""引起,如果需要转义使用反斜杠\
1 | var str = "hello"; // 对字符串hello赋值 |
Number数值
在JS中所有的数值都是Number,包括整数和浮点数
1 | var a = 123; // 数值 |
数值的运算
1 | var a = 123 + 222; //整数的计算基本是精确的 |
特殊数值
Infinity:超过最大值Infinity正无穷,-Infinity负无穷,它们的类型也是数值
NaN:是特殊数字,表示Not A Number
Boolean布尔值
布尔值只有两个,用作逻辑判断
- true 真
- false 假
1 | var a = true; |
NULL和Undefined
null用于表示为空的对象,如果使用typeof检查null值会返回object
undefined声明了但没有对变量赋值,它的值就是这个
1 | var a = null; |
强制类型转换
将一个数据类型强制转换为其他数据类型,通常转换为String、Number、Boolean
转换为String
方式一:调用toString() 方法,此方法不改变原变量,转换结果为返回值
1 | var a = 123; |
如果需要改变原变量直接将a赋值到输出结果即可a = a.toString();
ps:此方法对于数据类型null和undefined是没有toString()方法的
方式二:调用String()函数,参数放在括号内
1 | var a = true; |
ps:此方法可以使用在null和undefined,直接转换为String
转换为Number
方式一:使用Number()函数
- 如果是纯数字的字符串,可以直接转换为数字
- 如果字符串中有非数字或类型是undefined,则转换为NaN
- 如果字符串是空串或空格或类型是null,则转换为0
1 | var a = "123"; |
方式二:对于字符串中夹杂有数字的一般使用,函数parseInt()转换为整数,函数parseFloat()转换为浮点数
1 | var a = "123px"; |
Ps:parseInt()的识别是从左到右的,一旦读取到非数字的字符就会中断,后面的也不会继续识别,只取整数
1 | var a = "123.456px"; |
转换其他进制数字
16进制以0x开头
1 | var a = 0x10; |
8进制以0开头
1 | var a = 070; |
2进制以0b开头,但不是所有的浏览器都支持,兼容性不好
1 | var a = 0b10; |
转换为Boolean
使用Boolean()函数
-
数字转换除了0和NaN,其余都是true
-
字符串转换除了空串,其余都是true
-
null和undefined都是false
-
对象也是true
1 | var a = 123; |
算数运算符
运算符就是操作符,对一个或多个值进行运算,并获取字符串形式的返回值,运算符操作不会改变原变量
二元运算符
加法+
从左往右运算,对两个值进行加法运算,并返回结果
1 | result = true + false; //输出1,Boolean会转换为1、0进行运算 |
减法-
做减法运算
1 | result = 100 - true; //输出99,Boolean会转换为1、0进行运算 |
乘法*
做乘法运算
1 | result = 2 * "8"; //输出16,和字符串做乘法会转变为Number再相乘 |
除法/
做除法运算
1 | result = 4 / 2; //输出2 |
求余%
1 | result = 9 % 5; //输出4,得1余4 |
特性
- 任何值和NaN类型做运算都是NaN
- 任何值做
-、*、/做运算都转换为Number,任何值-0,*1,/1做Number隐性转换 - 加法
+,和任何字符串相加都会变成字符串,任何值加空串+""进行String隐性转换
一元运算符
正号+
正号不会对数字产生任何影响,对非Number的类型会先转换为Number
1 | var a = "18"; |
负号-
对数字进行取反,对非Number的类型会先转换为Number
1 | var a = true; |
自增和自减
自增++
在自身基础上增加1,会改变原变量
1 | var a = 1; |
前和后的自身区别
- a++的值等于原值(自增前)
- ++a的值等于新值(自增后)
1 | //一个典型的例子区别前后++ |
自减--
在自身基础上减1,会改变原变量
1 | var num = 10; |
前–和后–的自身区别
- num–的值等于原值(自减前)
- –num的值等于新值(自减后)
