1. JS基础语法
1. JS基础语法
1-1. js内嵌式基本使用
必须写在script标签内部
每一个行js代码结束之后要有; 结尾
script标签可以有type属性,也可以没有
type=“text/javascript”
script标签要尽量卸载body标签中,紧挨着body的结束标签(因为js一般要操作dom,确保dom结构加载完成)
1-2. js外部引入文件基本使用
目的:将js代码和html代码进行分离
- 通过src 属性指定外部引入文件路径
<script src="路径"></script>
- 外部引入script标签中写的代码不执行
- script 标签可以通过 defer 进行延迟加载
1-3. js中的注释
- 单行注释: // 注释的内容 快捷键:ctrl + /
- 多行注释: /* 注释内容 */ 快捷键:shift + alt + a
/*** 快捷键* 1. 多行注释 : shift + alt + a* 2. 单行注释 : ctrl + /* *///alert(333) dsfjasdklfjasdklfjsdklajfklasdjf a sjkdlfjasdlkfjkasldj f
alert(444)
1-4. js的三种常见输出方式
- alert() : 弹框输出
- console.log() :输出到控制台
- document.write(): 输出到页面进行显示[body标签中]
1-5. js语句和js表达式
js语句和js表达式有什么差别?
js表达式是有值的,可以用变量接收,可以用console打印
js语句没有值:没法用变量接收和console打印
js语句:
赋值语句:
语法: var 变量名 = 字面量
- 变量:变量使用来存储值和代表值的
- 字面量:字面上的量就是字面量
- 值可以直接使用
- 字面量不可以修改
变量命名—标识符:
2-1. 什么是标识符:js中可以自定义名字的 【变量、常量、函数名、类名、方法名】
2-2. 标识符命名规则:
- 字母、数字、_、$ 符只能有这四种
- 只能以字母、_、$开头
- 严格区分大小写
- 多个单词
- camelCase:大驼峰、小驼峰
- kebab-case:
- 不能使用js中的关键字和保留字
1-6. 预解析
js解析器不是一上来就从上到下执行js代码,而是先进性预解析。
- js代码执行过程
全盘扫描 var function 做预解析,规则如下:
var : 只声明不赋值
function:声明且赋值
代码从上到下执行
1-7. typeof
一元操作符:
语法: typeof 变量名/字面量
typeof 1 “number”
typeof ‘abc’ “string”
值:
- 首先本身值是一个字符串
- 字符串的内容,是检测出变量的类型
1-8. js数据类型[字面量]
usonb:
u:undefined
s: string、symbol
o: object
n: null、number
b:boolean
数据类型分类:
基本数据类型:
number、string、boolean、undefined、null
引用数据类型:
object [对象、数组、函数、正则…]
1-8-1. number
包括:正整数、负整数、0、浮点数、NaN、Infinity
1-8-2. string
定义方式: 单引号 、双引号【成对出现】
- 引号的嵌套:
- 转义符
- 不同的引号
- 转义:
- \\ 是转义符
- \\’ ==> ’
- \\" ==> "
- \\\\ ===> \\
- \\n
- \\r
- \\t
- \\普通字符===> 普通字符
1-8-3. boolean
true 、false
作用:用来做逻辑判断,控制程序执行的分支
1-8-4. null - undefined
null: typeof null ===> ‘object’
null 表示控制,一般用来做对象的初始值
undefined:只声明但未赋值的,默认值就是undefined
undefined是null的一种特殊表示
undefined == null ===> true
undefined === null ===> false
- =
- = : 赋值
- == : 比较运算,只比较值不比较类型
- ===: 即比较值也比较类型
1-9. 强制类型转化
其他类型向 => string | number | boolean 转化
1-9-1. string
- String
- toString
都可以将其他类型转化为string,但是 toString 对null 和undefined 会报错
cannot read properties of null | undefined (reading toString)
1-9-2. boolean
转化语法: Boolean(要转的数据)
‘’ 0 NaN null undefined ==> false
其他都是true
1-9-3. number
Number()
Number(null) => 0
Number(‘’) ==> 0
Number(’ ') ==> 0
Number(true) ==> 1
Number(false)==> 0
Number(undefined)==> NaN
Number(‘123adf’) ==> NaN
Number只能处理纯数字的字符串,左右两边有空格没问题,中间有就是NaN
parseInt: 只能转整数
parseFloat:认识小数点
parseInt:
- 首先拿出第一个字符串的字符,判断是不是数字,如果不是,直接返回NaN
- 如果是 保留该数字,继续向后看,如果是保留,直到不是为止,返回之前保留的数字
parseInt(null) undefined true false ‘’ ’ ’ ===> NaN
parseInt(‘123abc’) ==> 123
parseFloat(‘12.05px’) ==> 12.05
1-10. 算数运算 + - * / %
+:
- 如果两侧有一侧是字符串,那么就是字符串拼接操作,不是字符串的使用String或toString转化为字符串再进行拼接
- 如果两侧没有字符串,那么 + 就是算数运算,需要将两侧非数子的,Number一下,转成数字,在进行运算
-、* 、/、%
- 都是算数运算,都会Number一下在处理
- NaN 跟任何数进行算数运算,结果都是NaN
1-11. 赋值运算
+=
-=
*=
/=
%=
1-12. 自增
a++ 和 ++a
a++ 和 ++a 都是使a自增1
差别:
* ++a 表达式的值,取a自增后的值
* a++ 表达式的值,取a自增前的值
1-13. 比较运算
==: 只比较值不比较类型
===: 即比较值也比较类型
!= :
!==
>=
<=
- 不等号两边有数字: 将另一侧也转化为数字在比较 Number
- 字符串之间的比较:按位置比较字符串的 ASCII码,如果第一位一样,那就比第二个ASCII码,直到比较出结果为止
特殊值:
NaN: NaN跟任何值包括自己比较都是false
undefined:undefined跟任何其他值比较规则同NaN一致,都是false,只有在==的比较上不同
undefined===undefined =》true
undefined==null
=》 truenull:
跟数字进行比较的时候,转化成Number(null) ==> 0 在进行比较
== 比较
null ===null ==> true
null == undefined ==>true
1-14. 三元表达式
let a = 表达式1 ? 表达式2 :表达式3
如果表达式1 的布尔值为真,那么执行表达式2
如果表达式1的布尔值为假,那么执行表达式3
if(表达式1){
}else{
}
1-15. 逻辑运算
1-15-1. &&运算
let 整体表达式的值 = 表达式1 && 表达式2
(1)如果表达式1 的布尔值为真,那么整体表达式的值就是表达式2的值
(2) 如果表达式1 的布尔值为假,那么整体表达式的值就是表达式1的值
与运算又叫断路运算:当表达式1的布尔值为假时,表达式2不执行
1-15-2. || 运算
let 整体表达式的值 = 表达式1 || 表达式2
(1)如果表达式1的布尔值为真,那么整体表达式的值就是表达式1的值
(2)如果表达式1的布尔值为假,那么整体表达式的值就是表达式2的值或运算:两边只要有一边为真,即为真,两边都为假时,才为假
或运算叫短路运算:如果表达式1的布尔值为真,那么表达式2不执行
1-15-3. 非运算
作用:将表达式取布尔值,然后取反
快速获取一个值的布尔值: !!xxx <===> Boolean(xxx)
1-16.逗号运算符
var a = 1,b = 2,c = 3;
// 相当于以下代码,有预解析机制
var a = 1;
var b = 2;
var c = 3;// 逗号运算符 整体的值取最右侧的值
var d = (e=1,f=2);
// d 2
// e 1
// f 2
1-17. isNaN(变量)
is : 是
NaN:not a number
isNaN: 如果这个值不是数字[NaN],返回true,是数字返回false
作用:判断是一个值不是一个数字,如果不是,返回true,如果是返回false
(1)当值是字符串的时候,会进行强制类型Number转化后判断,其他情况不做转化
(2)isNaN(NaN): true ===> isNaN认为 NaN不是数字。
console.log(isNaN('10')); // 遇到字符串的时候,先将值 Number一下,在用isNaN判断
console.log(isNaN(10));
console.log(isNaN('10px'));
console.log(isNaN(null));
console.log(isNaN(NaN));//true
1-18. 小结
变量、字面量
变量:存储值和代表值
标识符:
1. 字母、数字、下划线、$ 1. 以上四种不能以数字开头 1. 严格区分大小写: 4. 多个单词:1. camelCase: 大小驼峰2. kebab-case
字面量:字面上的量
- 直接使用
- 不可修改
数据类型【字面量类型】
- 基本数据类型:number、string、boolean、null、undefined
- 引用数据类型:object
运算符:
- 算数运算:+
- ++ --:
- 比较运算:
- 逻辑运算:&& || !
- 强制类型转化:
- 字符串:String toString
- 数字:Number
- Number(‘’) ==> 0
- Number(’ ')==> 0
- Number(true) => 1
- Number(false)=>0
- Number(null) => 0
- Number(undefined) NaN
- boolean: Boolean !!
- false: ‘’ 、0 、NaN、null、undefined
- 三元表达式
- isNaN
- typeof: