一.JavaScript注释写法
1)单行注释
快捷键CTRL+/
2)多行注释
alt+shift+a
二.JavaScript结束符
结束符定义:在语句的末尾加上';'表示语句的结束,在css中必须写语句结束符,但在JavaScript中可以写也可以不写,甚至混着写也没有问题,现在主流趋势是不写,在团队的分工合作中可以统一规定写或者不写。
三.JavaScript输入输出语法
1) 文档输出内容
①document.write('要输出的内容');
注意:在document.write();中可以加标签,其效果也会被浏览器渲染。
②alert('要输出的内容')
弹出警示框包含输出内容
③console.log('要输出的内容')
只在控制台可见,用于程序员调试程序。
快捷写法:直接写log然后向下箭头取第二个然后回车。
2)文档输入内容
prompt('提示信息');
弹出对话框,提示用户输入信息。
JavaScript代码执行顺序:
1.按HTML文档流顺序执行JavaScript代码
2.alert()和prompt()会跳过页面渲染先被执行。
四.字面量
1.数字字面量:10086
2.字符串字面量:'string'
3.数组字面量[]
4.对象字面量:{}
五.变量
1.变量的定义:用于存储数据的容器。
2.变量的声明与赋值:
声明:
let+变量名
赋值:
使用操作符'='
3.变量的本质:
程序在内存中申请一块用来存放数据的空间
var声明的不合理性:
1可以先使用,再声明(不合理)
2.var 声明过的变量可以重复声明(不合理)
3.比如变量提升、全局变量、没有块级作用域等等
六.数组的基本使用
1.数组的定义:
是一种按照顺序保存数据的数据类型。
2.数组声明与赋值:
let arr = [数据0,数据1,数据2,....,数据n](常用)
或let arr = new Array(数据0,数据1,数据2,....,数据n)
arr是变量名
[]是数组字面量
3.取值语法:
数组名[下标]
4.数组长度:
arr.length(写法)
5.操作数组:
arr.push(元素)将一个或多个元素添加到数组的末尾,并返回该数组的新长度(重点)
arr.unshift(元素)将一个或多个元素添加到数组的开头,并返回该数组的新长度
arr.pop()从数组中删除最后一个元素,并返回该元素的值
arr.shift()从数组中删除第一个元素,并返回该元素的值
arr.splice(开始删除的下标,删除的个数)从数组中删除指定元素
七.常量
声明:
const+常量名 = 常值
*常量声明时必须初始化!
八.数据类型和算术运算符
1.Number数字类型
包括所有数字(整数,小数,正数,负数......)
*js是弱数据类型语言,只有当我们赋值了,才知道是什么语言。
2.算数运算符
+、-、*、/、%
'NaN'表示计算错误
3.string字符串类型
字符串使用单引号或双引号或反引号进行包裹
*字符串的拼接:
1).两个带引号的字符串使用+号可以连起来。
2).可以使用+号将字符串与任意数据类型进行拼接。
4.模板字符串
外面用反引号包含,内部变量使用${}包含即可。
5.boolean布尔数据类型
true与false是布尔型字面量
逻辑中断:
①数据1&&数据2:
一假则假,都是真则返回最后一个真值
②数据1| |数据2:
一真则真,都真则返回第一个真值
6.转换为布尔型(显式转换):
``,0,NaN,false,null,undefined都为假,其他都为真
7.转换为布尔型(隐式转换):
数字+字符串 = 将数字转换为字符串后拼接
数字-字符串=将字符串转换为数字后相加减
null计算转换为0
undefined计算转换为NaN
null = = undefined
null != = undefined
8.undifined未定义类型
只定义未赋值的数据类型默认是未定义类型,一般很少直接定义未定义的数据类型
9.null空数据类型
注意:undefined数据类型表示没有赋值
null数据类型表示赋值为空,把null看作未创建的对象,即null实际上是对象数据类型
10.如何检测数据类型
通过typeof关键字检测数据类型
九.隐式转换和显示转换
1.为什么要使用转换?
通过表单接收的数据默认为字符串数据类型,影响对这些数据进行操作(计算)
2.隐式转换
+ 号两边只要有一个是字符串,都会把另外一个转成字符串
除了+以外的算术运算符 比如- */等都会把数据转成数字类型
+号作为正号解析可以转换成数字型
任何数据和字符串相加结果都是字符串
隐式转换不明确,靠经验才能总结!!!
3.显示转换
编写程序时过度依靠系统内部的隐式转换是不严禁的,因为隐式转换规律并不清晰,大多是靠经
验总结的规律为了避免因隐式转换带来的问题,通常根逻辑需要对数据进行显示转换。
即告诉系统转换成什么数据类型
parseInt只保留整数
parseFloat保留小数
十.渲染表格案例
用户输入单价、数量、收货地址,通过HTML、CSS制作表格,js变量、模板字符串等知识实现交互效果。
十一.运算符
1.赋值运算符:
对变量进行赋值的运算符
=、+=、*=、-=、/=(与C或C++的规则一样)
2.一元运算符:
+-(正负号而非加减号)、自增++、自减-- (与C或C++的规则一样)
3.比较运算符:
>,<,>=,<=,==,===(左右两边是否类型和值都相等),!==
=是赋值
==是判断(2=='2' true,因为比较运算符有隐式转换)
===是严格判断(常用)(相当于C或C++中的==)
!==不全等(相当于C或C++中的!=)
NaN不等于任何人,包括它自己!
字符串比较Ascll码
比较运算符返回结果为true or false
4.逻辑运算符:
&&且,||或,!非 (与C或C++的规则一样)
5.运算符优先级:
十二.语句
1.表达式和语句
表达式是可以被求值的代码,语句是可以被执行的代码。
表达式可以被求值,而语句不一定有值。
2.分支语句
1)if分支语句
*除了0,所有的数字都为真。
*除了空字符串,所有字符串都为真。
2)双分支语句
if ( ) {
} else {
}
3)多分支if语句
if ( ) {
} else if {
} else if {
} else {
}
4)三元运算符
三元运算符是比if双分支更简单的写法,可以使用三元表达式,一般用来取值。
语法:
3.switch语句
找到跟小括号里数据全等的case值,并执行里面对应的代码
若没有全等===的则执行default里的代码
十三.循环结构
1.while循环
(与C或C++的规则一样)
2.for循环
(与C或C++的规则一样)
3.退出循环:
continue:退出本次循环,一般用于排除或者跳过某一个选项的时候,可以用continue
break:退出整个for循环,一般用于结果已经得到,后续的循环不需要的时候可以使用
4.无限循环:
while(true)或for(;;)都是无限循环,使用break退出循环。
5.使用建议:
当循环次数确定的时候推荐使用for循环(如数组循环),循环次数不确定,使用while循环,当条件满足时,使用break退出循环。
6.for循环嵌套循环
(与C或C++的规则一样)
注意:js打印换行时,<br>要处于反引号或单引号里面:`<br>`或'<br>'
十四.函数
1.函数的声明:
function 函数名(参数列表,多个数据用逗号隔开)
{ 函数体 }
函数语法规则与C或C++基本一致,但js更为包容。
参数的默认值:在调用含参函数时,可以给形参默认值,这样程序更严谨。
2.匿名函数:
没有名字的函数,无法直接使用
使用方法:
①.函数表达式:
将匿名函数赋值给一个变量,并且通过变量名称进行调用,我们将这个称为函数表达式,语法:
let fn = function(形参){函数体}
注意:具名函数的调用可以在任何位置,但使用函数表达式时,必须先声明表达式后调用
②.立即执行函数:
避免重名相互影响问题,语法:
(function(形参) {函数体})(实参);
或(function(形参) {函数体}(实参));
注意:多个立即执行函数之间用分号';'隔开。
转换时间算法:
十五.对象
1.对象的概念:
JavaScript里的一种数据类型,可以理解为一种无序的数据集合。(类似C++中的对象概念,但语法不同)
2.对象的声明语法:
①.let 对象名 = { }(常用)
②.let 对象名 = new Object()(了解)
3.对象由属性(信息或特征)和方法(功能或行为)组成:
属性都是成对出现,包括属性名和值,它们之间使用英文 : 分隔
多个属性之间使用英文 , 分割
属性就是依附在对象上的变量
4.对象的使用(增删改查):
注意:
查的两种方式:
(1)对象名.属性名
(2)对象名['属性名']
5.对象的方法
let obj = {
song(方法名):function(参数){函数体}
}
对象方法的使用:
song(方法名)
6.for in 遍历对象
for(let k in obj)
{
console.log(obj[k])//k为属性名,其数据类型是字符串
}
7.内置对象
JavaScript内部提供的对象,包含各种属性和方法供开发者使用。
(1)内置数学对象
Math.ceil()向上取整
Math.floor()向下取整
(类似取整函数parseInt()但是parseInt功能更厉害)
Math.round()四舍五入
Math.ceil()向上取整
Math.max()取最大值
Math.abs()取绝对值
(2)生成任意范围随机数
原理:Math.random()随机数函数,返回一个0-1之间,且包括0不包括1的随机小数[0,1)
生成0~n随机数:
Math.floor(Math.random()*(n+1))
生成n~m间的随机数:
Math.random()*(m-n+1)+n