一、js简述
1.JavaScript是什么
是一种运行在客户端(浏览器)的编程语言,实现人机交互效果。
2.JavaScript做什么
-- 网页特效(监听用户的一些行为让网页作出对应的反馈)
-- 表单特征(针对表单数据的合法性进行判断)
-- 数据交互(获取后台的数据,渲染到前端)
-- 服务端编程(node.js)
3.JavaScript组成
ECSAScript:
规定了js基础语法核心知识。
比如:变量、分支语句、循环语句、对象等等。
Web APIs:
DOM 操作文档,比如对页面元素进行移动、大小、添加删除等操作
BOM 操作浏览器,比如页面弹框,检测窗口宽度、存储数据到浏览器等等
二、js书写位置
行内:代码写在标签内部
内部:直接写在html文件里,用script标签包住。script标签写在</body>上面
外部:代码写在以.js结尾的文件里,通过script标签,引入到html页面中
注释
输入输出语法
三种输出
一种输入
字面量:在计算机中描述事/物
三、变量(计算机存储数据的容器)
1.基本使用:
声明(定义): let 变量名 let age
赋值: = age = 18
通过变量名使用数据
2.更新变量
let age = 18
age = 19
console.log(age)
3.变量的本质
是程序在内存当中申请的一块用来存放数据的小空间
补充:
四、数组
一种将一组数据存储在单个变量名下的方式
1.基本使用
数组是按顺序保存,所以每个数据都有自己的编号(索引、下标)
五、常量
使用const声明的变量称为“常量”(不是let)
常量不允许重新赋值,声明的时候必须赋值(初始化)
六、数据类型
JS数据类型整体分为两大类:
> 基本数据类型
> 引用数据类型
1.数字型(number)
即我们数学中学习到的数字(整数,小数,正数,负数)
js是弱数据类型的语言(只有赋值之后才知道变量/常量的数据类型)
算术运算符:+、-、*、/、%(取模)
NaN是一个“不是一个数字”,是粘性的任何对NaN的操作都返回NaN
2.字符串类型(String)
通过单引号、双引号、反引号包裹的数据(单引号和双引号没有本质上的区别,推荐使用单引号)
必要时使用转义字符
字符串拼接:+
模板字符串: 使用场景:拼接字符串和变量
语法: ·· 反引号(Tab键上面那个键)
内容拼接变量时用${}包住变量
3.布尔类型(boolean) true false
4.未定义类型(undefined) 只有一个值undefined
只声明变量,不赋值的情况下,变量的默认值为undefined
5.空类型(null)赋值了,但是内容为空
把null作为尚未创建的对象(将来有个变量里面存放的是一个对象,但是对象还没有创建好,可以给个null)
undefined + 1 NaN
null + 1 1
6.检测数据类型 通过typeof关键字检测
1 > 作为运算符:typeof x (常用写法)
2 > 函数形式:typeof (x)
7.类型转换:使用表单、prompt获取过来的数据默认是字符串类型的,此时就不能直接简单的进行加法运算
隐式转换:某些运算被执行时,系统内部自动将数据类型进行转换,这种转换被称为隐式转换
规则:+ 号两边只要有一个字符串,都会把另外一个转成字符串(+'123' +号将123转为 了数字型)
除了 + 号以外的算术运算符都会把数据转成数字型
缺点: 转换类型不够明确,靠经验才能总结
任何数据和字符串相加结果都是字符串
显式转换:自己写代码告诉系统该转成什么类型
转为数字型 Number(数据)
NaN也是number类型的数,代表非数字
parseInt(数据):只保留整数
parseFloat(数据):可以保留小数
七、运算符
1.赋值运算符:=、+=等等
众多的JavaScript 的运算符可以根据所需表达式的个数,分为一元运算符、二元运算符、三元运算符
2.一元运算符 :+、- (正号、负号),自增(++)自减(--)
前置自增和后置自增单独使用没有任何区别
一般在开发中都是独立使用
3.比较运算符(也有隐式转换)
NaN不等于任何人,包括他自己
字符串比较,是比较字符对应的ASCII码
不同类型之间比较会发生隐式转换
所以推荐使用 ===、!==
4.逻辑运算符(与或非) 多重条件判断
5.运算符优先级
八、语句
1.表达式与语句的区别:
表达式可以被求值的代码,JavaScript引擎会将其计算出一个结果
语句是一段可以执行的代码(不一定有值)
2.分支语句
三大流程控制语句:
以前我们写的代码,写几句就从上往下执行几句,这种叫顺序结构。有的时候要根据条件选择执行代码,这种就叫分支结构
分支语句:可以让我们有选择性的执行想要的代码
分支语句包含:if分支语句、三元运算符、switch语句
(除了0,所有的数字都为真,除了空字符串,所有的字符串都为真)
三元运算符(等同于if-else语句)
一般用来取值
3.循环语句
断点调试(设置断点)
while循环 :在满足条件期间,重复执行某些代码
九、for循环
十、数组
数组:可以按顺序保存数据的数据类型(单个变量存储多个数据)
1.声明: let 数组名 = [数据1,数据2,...]
let arr = new Array(数据1,数据2,... ,数据n)
2.取值语法 数组名 [下标]
3.操作
增: arr.push() 添加到末尾,并返回新长度 arr.unshift() 添加到开头,并返回新长度
删:arr.pop() 删最后一个,并返回删除元素的值 arr.shift() 删第一个,并返回删除元素的值
arr.splice(操作的下标,删除的个数(如果省略,则默认从指定的起始位置删除到最后))
十一、函数
1.为什么需要函数?
可以实现代码复用,提高开发效率
2.函数是什么?
function执行特定任务的代码块
3.函数使用
函数的声明
函数的命名规范
函数的调用
4.函数传参
调用
形参和实参的概念
参数默认值
5.函数返回值(return)
有返回值的函数:
当调用某个函数,这个函数会返回一个结果出来
细节:
函数细节补充
6. 作用域
7.匿名函数
没有名字的函数,无法直接使用
使用方式:
函数表达式:将匿名函数赋值给一个变量,并且通过变量名称进行调用
具名函数的调用可以写到任何位置
函数表达式,必须程序按声明函数表达式,后调用
立即执行函数: 避免全局变量之间的污染
第一种:
()():前一个写方法,后一个不写,表示立即执行(调用),立即执行函数必须加分号
第二种:
8.逻辑中断(类似于参数的默认值写法)
两边都为真,“与”的结果是第二个真值,“或”的结果是第一个真值
9.转换为boolean型
十二、对象
1.什么是对象(JavaScript里的一种数据类型)
可以理解为是一种无序的数据集合,注意数组是有序的数据集合
2.对象使用({}是对象字面量)
(1)对象的声明
(2)对象由属性和方法组成
属性就是依附在对象上的变量(外面是变量,对象内是属性)
(3)增删改查
查的另外一种:对象名['属性名']
(4)对象中的方法
方法调用 对象名.方法名
(5)遍历对象
K输出的是数组下标但是是字符串类型(很少用来遍历数组)
遍历对象用for...in
(6)内置对象
数据类型补充: