JavaScript
JavaScript是一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。
服务器渲染
服务器压力过大;网页不能局部更新;不利于团队合作
客户端渲染
前后端分离,有利于团队合作;可以局部更新;服务器压力不大
JS的构成
核心 :ECMAscript
BOM 浏览器对象模型
客户端和浏览器端窗口操作的基础(操作浏览器窗口的),可以使用BOM对浏览器窗口进行访问和操作,比如移动窗口位置、返回历史记录等等
DOM 文档对象模型
提供了一系列的应用程序接口(api),供我们开发者对DOM的添加删除修改等(说白了就是操作标签的)
html中引入js的三种方法
-
head 头部、body 内、body 下面
-
行内(写在标签里)
-
重新建一个js文件,通过地址引到html文件中
声明
变量
1.var
- var 变量名 = 变量值; = 赋值操作
- (先有值,再有名 将值赋值给名)
- 声明任何类型
- 可以重复声明同一个变量
- 声明变量未赋值,默认undefined 空 未定义
2.let
- let 变量名 = 变量值; (先有值,再有名,将值赋给名)
- 任何类型
- 不能重复声明同一个变量
- 声明变量未赋值,默认undefined 空 未定义
常量
const
- const 变量名 = 变量值; (先有值,再有名,将值赋给名)
- 不能重复声明同一个变量
- 不能被修改
- 常量必须要赋值
命名语法规范
- 变量名 区分大小写
- 字母 数字 下划线 $ ,不能用数字开头
- 不能使用关键词 与保留
- 语义化---汉译英 //大驼峰BigApple 小驼峰bigApple 下划线big_apple
JS的数据类型
原始类型 7种
(基础类型) --7种
number 数字
整数 小数 NaN(Not a Number)
- 💘注意:小数相加的时候,会存在一个精度问题(先将十进制转化为二进制计算,再转化为十进制);整数不存在精度问题。 解决方法:使用toFixed()保留小数
- 💞数值有一个范围,超出该范围进行计算,会出现失去精度的问题。
- 1.NaN 不能等于任何内容,包括它自己
- 2.任何数字与NaN进行计算,结果都是NaN
- + - * / %
String 字符串
'' "" ``(es6--字符串模版)
boolean
undefined
null 无 空
BigInt 大数 es6 新增
Synbol 唯一值 es6 新增
相关函数
isNaN() 判断是不是有效数字
是有效数字 false; 不是有效数字 true;
先将任何类型转化为数字(Number()),再判断
Number() 将其他类型转化为数字
- 如果遇到字符,字母...,只要不是数字,就转化为NaN
- 特殊 :
null---0 false---0 "" " "----0 []--0
undefined---NaN {} --- NaN
true---1
- 如果是Symbol报错
- 遇到对象时,先转化为字符串,再转为数字
parseInt()将其他类型转为number,整数部分
从左向右找,遇到不是数字就停止;如果找不出来,就是NaN
parseFloat()整数部分+小数部分
toFixed 保留小数 四舍五入
Number的取值范围
BigInt 大数
toString() 转化为字符串
String()将其他类型转化为字符串
区别:toString() 是对象方法,需要在对象上调用;String是全局函数,可以接受任何类型的参数。
Boolean() 将其他类型转化为布尔 (直接)
- 特殊:五种为false 0 null NaN undefined "" (中间啥都没有的引号)
- 其他都为true
间接转Boolean ! 非--取反
- "11"---true !"11" ---false !!"11"---true
- !!xxx --- Boolean(xxx)
null与undefined的区别
null
未来要存放引用类型的值,释放内存
undefined
- 声明变量未赋值
- 获取没有的属性值
引用类型 11种
引用类型都需要 new
装箱 :值类型---引用类型---值类型
拆箱:引用类型---值类型---引用类型
-
数组 array
-
字符串 string (双)
-
数字 number (双)
-
Object 对象 普通对象
Object {} key:value 键值对 用,分隔
-
function 函数
-
正则
-
window 全局对象