基础
1.变量:变量就是一个内存
语法:var 变量名 = 值;
作用:
1.经常使用的数据,可以提前保存起来
2.数据是可能被修改的
☆特殊:
Ⅰ 变量名不是随意的:
a.不能以数字开头 b.不能使用关键字 c.尽量见名知意
☆变量有一个很特殊:**name**————不管你保存什么都是一个字符串
Ⅱ 创建多个变量,可以省略中间的 var ,分号换为逗号
Ⅲ 等号(=)是赋值符号:等号右边的数据保存在等号左边的变量名之中,左边就单单纯纯的是一个变量名而已
2.常量:一旦创建不可被修改
语法:const 常量名 = 值;
3.☆☆☆数据类型:不同的数据类型,操作也不一样
1、原始/基本/值类型:5个
Number - 数字,取值:无数个
String - 字符串,取值:无数个
Boolean - 布尔值,取值:2个,表示一个【判断的结果】,true、false
Undefined - 取值只有一个:undefined - 变量的默认值,undefined没有任何作用
Null - 空,取值1个:null,作用:你用完了的变量(内存),可以用null释放 - 释放内存节约
2、引用/对象类型:11个对象(属性和方法)
4.算术运算符:+ - * / %
m%n:取余,俗称模,m/n不取商,而且除不尽的余数
作用:
1.判断奇偶性
num%2 == 1 奇数
num%2 == 0 偶数
2.获取一个数字的后n位
1234%10 -> 4
1234%100 -> 34
1234%1000 -> 234
3.判断一个数字永远不超过几
num%5 -> 结果永远不会超过5
☆☆☆算术运算其实具有隐式数据类型转换,默认都会转为数字运算
*特殊点*:
+运算,如果碰到一个字符串,那么两边的数据都会悄悄转换字符串,然后+运算变为拼接操作。
- * / %其实字符串也可以转为数字,必须是纯数字组成的字符串才行,只要包含一个非数字字符结果则为NaN。
扩展:
1、用户输入框:var user=prompt("提示文字","默认值");
2、查看数据类型:typeof(变量/值/表达式);
3、页面上获取到的数据类型都是字符串,如果你就想转为数字:
parseInt(str) -> 转为整数
parseFloat(str) -> 转为浮点数
分支结构
分支的作用:判断
1、程序的结构:3种
1、顺序结构:默认结构,从上向下依次执行每一句代码
2、分支结构:根据判断条件,选择一部分代码去执行(只会走一条路)
3、循环结构:根据判断条件,选择是否重复执行某一段代码
2、比较/关系运算符:> < >= <= == !=
结果:以上六个运算符结果都为布尔值:true、false
往往比较运算符出现在分支、循环的判断条件之中
其实关系运算符也具有隐式转换。
3、if结构: 语法:
1、一个条件一件事,满足就做,不满足就不做 但是后续代码还是会执行的
if(判断条件){
操作;
}
2、一个条件两件事,满足就做第一件,不满足就做第二件
if(判断条件){
操作1;
}else{
默认操作;
}
3、多个条件多件事,满足谁就做谁
if(判断条件1){
操作1;
}else if(判断条件2){
操作2;
}else{
默认操作
}
强调:
1、最后的else是可以省略的,但如果条件都不满足,则分支白写
2、条件有时候写的顺序需要注意,因为分支只会走一条路
☆☆☆☆☆函数
Function基础:也称之为方法
例子:
url(图片路径):完成了一个根据图片路径显示图片的功能
rotate(90deg):完成了一个根据角度值顺时针旋转45度的功能
js的自定义函数:完成了一个......功能
1、什么是函数:
函数(Function)是一段被【预定义好的】,可以【反复使用】的代码是个独立的功能体,可以将【若干】的代码放在里面。
2、语法:2部分
1、创建函数/方法
function 函数名(){
//若干代码段
}
2、调用函数/方法
函数名();//程序员写几次就调用几次
小技巧:绑定在页面元素之上,用户来触发了
<elem onclick="js语法"></elem>
3、什么东西适合放在函数之中?
1、不希望打开页面立刻执行,等用户来触发
2、不希望只执行一次,可以反复触发
3、本身就是一个独立的功能体:你写的每一个作业都是一个独立的功能体
4、建议:以后每一个作业都要封装为一个函数:函数在js中具有第一等公民的地位,函数中的变量都是会自动释放的。
4、带有参数的函数:
榨汁机 - function:功能:榨汁
原材料 - 参数:放入一个苹果、梨子、香蕉...
如何创建带参数的函数:
function 函数名(形参,...){
//形参(形式参数)其实就是一个变量,只不过不需要var
函数体;
}
调用带参数的函数的时候:
函数名(实参);//实际参数
function zzj(fruit){
console.log("榨"+fruit+"汁");
}
zzj("苹果");
zzj("梨子");
强调:
1、传入实参的顺序一定要和形参的顺序对应上
2、函数不一定非要有参数:
Ⅰ、如果你的操作是固定的,则不需要传递参数
Ⅱ、根据传入的实参不同,做的操作略微不同,则需要添加参数
扩展:
逻辑运算符:
&&:与(并且)
只有全部条件都为true,最后结果才为true
只要有一个条件为false,最后结果就为false
||:或
只有全部条件都为false,最后结果才为false
只要有一个条件为true,最后结果就为true
!:颠倒布尔值:
!true -> false
!false -> true