一、什么是变量
经常改变的量。
变量是程序在内存中申请的一块用来存放数据的空间。
变量由变量名和变量值组成,通过变量名可以访问变量的值。
回顾:Java的变量名的命名规则:
1.不能以数字开头
2.不能使用关键字(Java或JavaScript中自带的相关属性或方法。)
3.严格区分大小写
4.只能够由 数字 字母 下划线 $ 符号组成
5.见名知意 例如age name 而不是 a b c d
6.推荐使用驼峰命名法,例如studentName
正课:JS的变量名的命名规则,和Java完全一致。
下面哪个变量名式合法的。
number 合法、
88shout 不合法,数字开头
myScore 合法
&num 不合法
var 不合法 关键字
it123 合法 但是不推荐
$tuition 合法
常见的关键字:
if else switch for class
do while case break contiue
return default new var void
预留关键字:现在还没有自带,但是未来有,已经提前预留了。
implements package public interface
二、js如何声明两个变量
扫盲: var 是varible(翻译:变量) 的缩学
回顾:Java是如何声明变量的: 数据类型 变量名 = 变量值 ;
js如何声明变量: var 变量名 = 变量值 ;
潜台词:不管JS是什么数据类型,都用var.
JS中声明变量的2种方式:
1.先声明再赋值.例如:
var num ;
num = 10;
2.声明的同时也赋值,例如:
var age = 20;
三、JavaScript中的数据类型
回顾:Java中的数据类型分类:
A.基本数据类型
B.引用数据类型
新课:JS同上,完全一致。
回顾:
Java中的基本数据类型:
1字节:byte boolean
2字节:char short
4字节: int float
8字节:long double
Java中的引用数据类型:
String 数组(Array) 任何Class,不管是你写的类还是JAVA自带的类。
JavaScript的基本数据类型:
number 注意:number是数据类型但不是关键字
string 注意:string在java是引用,在JS是基本
boolean
null
undefined
bigint
symbol
JavaScript的引用数据类型:
数组 Object 函数(方法) 等等
四、boolean和number和string讲解
boolean读布尔
js的boolean和java的boolean完全一致
体现在:都是基本数据类型 都只有true和false
意义:用程序表示一件事成功或者失败,或表示一个条件成立或不成立。
JavaScript中严格区分大小写,因此true和false值只有全部为小写时才表示布尔型。
js中的number(读数值类型)讲解
一句话总结:即可以存放小数,也可以存储整数
var a = 123;
var b = 12.5;
a和b都是number类型.没有加引号
js中的string(读字符类型)讲解
这里要注意:
js的String和java的String不同之处1:
string在java是引用,在JS是基本
js的String和java的String不同之处2:
string在java中通过双引号声明
string在js 中既可以通过双引号也可以通过单引号声明
例如:
var str1 = "你好";
var str2 = '我好';
//以上都是string的写法
五、转义符的使用
我想在页面输出: 你好,我的外号是"大聪明";
document.write("你好,我的外号是"大聪明";");写法是错误的.不能同时存在多个双引号
做法1:我们需要知道 单引号里面可以包着双引号
document.write('你好,我的外号是"大聪明";');
做法2:通过转义符-- 反斜杠(enter上面的):\ 斜杠:/ (shift左边的)
document.write("你好,我的外号是\"大聪明\";");
常见的转义符:
见7_常见转义符.png
六、常见转义符
七、null和undefined数据类型解析
null 表示空的意思 例如:
var str = null;
null的注意事项:没有任何属性或方法可言
undefined 表示未定义的意思 只声明了变量但是未赋值
例如:
var str123 ; 这个str123就是undefined
八、bigint和symbol讲解
bigint 翻译:大数值
如果存在需求需要计算很大很大(不用去记,因为很大。)数字,那么number将无法实现
例如:下面的number绰绰有余
var num1 = 1111111;
var num2 = 2222222;
console.log(num1+num2);
var num1 = 11111111111111111111; number
var num2 = 11111111111111111111; number
console.log(num1+num2); 计算结果出现了误差
所以就需要借助于bigint
bigint类声明方法:
var num3 = 1111111111111111111n; 只需要在最后加n即可
var num4 = 1111111111111111111n; 只需要在最后加n即可
console.log(num3+num4);
symbol讲解:略 常用于独一无二的对象.
九、数据类型检查
var num = 11; number
var str = "11"; string类型
console.log(num);
console.log(str);
以上写法:是我们可以看到的.所以可以知道是什么类型.
但是缺点1:不方便在控制台得知是什么类型
例如我们第一章节学习的prompt语法
var money = prompt("请输入你的金额"); 通过money变量接受用户在前台输入的值
console.log(money); 所需我们就要学习如何识别xx变量是什么类型
总结:prompt的返回值都是string
如何判断一个变量是什么类型
语法: typeof xxx 返回是一个数据类型
var str = 123;
console.log( typeof str); number
str = "123";
console.log( typeof str); string
十、掌握数据类型装换
为什么要学习数据类型转换?见一下例题:
var num1 = prompt("请输入第一个数");
var num2 = prompt("请输入第二个数");
alert("两数之和为" + (num1 + num2)); 这种写法是错误的
原因:prompt返回的是一个string类型,两个string类型相加,是以拼接的形式
如何将字符串转成number类型.
js提供了下面三个方法,各有区别,都要掌握
parseInt()
parseFloat()
Number()
parseInt 将一个字符串类型的数字解析成整数
alert( parseInt("11.12") ); 11
alert( parseInt("11.99") ); 11 总结1小数后面直接省略,不会四舍五入
alert( parseInt("11.a12") ); 11 总结2小数后面直接省略
alert( parseInt("11a.a12") ); 11 总结3:解析顺序从左到右,解析到非数字就停止.
alert( parseInt("1a1a.a12") ); 1 总结4:只需要记住总结3
alert( parseInt("a11a.a12") ); NaN NAN 翻译: not a numnber 不是一个数字
parseFloat()和上面的语法完全一致,唯一区别保留小数
console.log( parseFloat("11.11") ); 11.11
console.log( parseFloat("11.11a") ); 11.11
console.log( parseFloat("11.1a1a") ); 11.1
console.log( parseFloat("11a.11") ); 11
console.log( parseFloat("a11.11") ); NAN
console.log( parseFloat("11.a") ); 11
Number()只能将真正的数字解析
console.log( Number("11.11") ); 11.11
console.log( Number("11") ); 11
console.log( Number("11") ); NAN
十一、算术运算符
算数运算符有如下几种:
+ - * / %
以上五种是最基本的加减乘除和取余
其中取余的注意事项:例题如下
console.log(10%3); 1
console.log(10%-3); 1
console.log(-10%3); -1
console.log(-10%-3); -1
总结:取余结果的正负取决于%左边的正负,也就是两个数取余,首先全看成正数
然后结果的正负和%左边的正负一致即可.
** 幂运算 语法: a ** b 理解为a的b次方
console.log(2**3); 8
++ 和 -- 表示自增1 和自减1
有两种用法: a++ 表示先用在加 ++a表示先加再用
做算数运算的注意事项: 任何编程语言都有一个通病
做小数运算会可能损失精度
console.log(0.1+0.2); 0.300000004
所以JS提供了一个方法 来避免这种情况出现
aaa.toFixed(num); 表示保留小数点后面几位小数
aaa表示某个数 num表示保留几位 如果没写默认就是0
console.log( (0.1+0.2).toFixed(3) );
注意事项: 该方法的返回值是string类型.
字符运算符 就是一个 +
字符之间的运算 通过 + 即可完成拼接
var str1 = "张三";
var str2 = "是猪";
console.log(str1+str2); 张三是猪
注意事项:任何类型 + string = string
所以:我们不仅可以将字符串转型成数字 也可以将任何类型 转成string
最常见的做法: 直接和空字符串相加即可.这样不会影响值的本身.
console.log( typeof (1234 + ""));
十二、赋值运算符
赋值运算符:最常见的就是 = 将右边的式子赋给左边.
var a = 2 ;
不常见的有如下:
+= *= -= /= %=
例如
a = a + 1; 等同于 a+=1;
十三、比较运算符
比较运算符 用来比较两个值 怎么样 返回结果为boolean类型.
例如常见的有以下: > < >= <= != ==
了解一下的 === 表示全等于
==仅仅是判断值是否相等 ===不仅要值相等而且要类型相等
console.log("1" == 1); true
console.log("1" === 1); false
十四、逻辑运算符
逻辑运算符的用法主要分为以下4类:
&& 短路与 & 逻辑与
|| 短路或 |逻辑或
用法完全一致 区别如下:
例如 a && b
如果a和b都为真,返回值才为真. 那么当a为false 将不会执行b
例如 a & b
如果a和b都为真,返回值才为真. 当a为false 将会执行b
例如 a || b
如果a和b只要有一个为真,返回值才为真. 那么当a为true 将不会执行b
例如 a | b
如果a和b只要有一个为真,返回值才为真. 当a为true 将会执行b
var num = 1;
false && num++;
console.log(num); 1
true || num++;
console.log(num); 1
var num = 1;
false & num++;
console.log(num); 2
true | num++;
console.log(num); 3
十五、三元运行符
三元运算符也称为三元表达式
语法如下:
条件表达式 ? 表达式1 : 表达式2
如果条件表达式的值为true,则返回表达式1的执行结果。
如果条件表达式的值为false,则返回表达式2的执行结果。
常用于替代简单的if-else语句
var age = 18;
if (age>18) {
alert("成年了");
} else{
alert("未成年");
}
alert( age>18?"陈年了":"未成年" );
十六、流程控制
流程控制.如果没有流程控制,JS的代码将会从上至下依次执行
有了流程控制,可以根据需求来进行代码的执行顺序
JS中的流程控制:无非就是 if 和 switch
其中if分为 简单的if if-else if else if
使用if语句实现只有当年龄(age变量值)大于等于18周岁时,才输出“已成年”,
否则无输出。
var age = 18;
if (age>=18) {
alert("已成年");
}
使用if…else语句实现当年龄(age变量值)大于等于18周岁时,输出“已成年”,
否则输出“未成年”,示例代码如下。
var age = 18;
if (age>=18) {
alert("已成年");
}else{
alert("未成年");
}
使用if…else if…else语句实现对一个学生的考试成绩按分数进行等级的划分:
90~100分为优秀,80~90分为良好,70~80分为中等,60~70分为及格,分数小于60则为不及格。
var score = 75;
if (score > 90) {
alert("优秀")
} else if(score>80) {
alert("良好");
}else if(score>60){
alert("及格");
}else{
alert("不及格");
}
如果可能性较少 就有2-4种,使用if即可 如果可能很多就推荐使用switch
switch语句也是多分支语句,相比if…else if…else语句,
switch语句可以使代码更加清晰简洁、便于阅读,其语法格式如下。
switch ( 表达式 ) {
case 值1:
代码段1;
break;
case 值2
代码段2;
break;
...
default:
代码段n;
}
使用switch语句判断变量week的值,若week变量的值为1~6时输出“星期一”~“星期六”,
为0时输出“星期日”,若没有与week变量的值相等的case值时输出“错误”。
var week = 2;
switch (week){
case 1:
alert("周1");
break;
case 2:
alert("周2");
break;
case 3:
alert("周3");
break;
case 4:
alert("周4");
break;
case 5:
alert("周5");
break;
case 6:
alert("周6");
break;
case 0:
alert("周日");
break;
default:
alert("没有这个日期");
break;
}
注意事项1:break的重要性
如果case中没有break,那么进入case之后,将不会跳出,而是会直接进入后续的case,并且是无条件进入,直到被break或执行完毕
注意事项2:如果存在多个case有相同的结果,怎么节省代码量。
var week = 2;
switch (week){
case 1:
case 2:
case 3:
case 4:
case 5:
alert("工作日");
break;
case 6:
case 0:
alert("节假日");
break;
default:
alert("没有这个日期");
break;
}
十七、循环结构
for (var i = 1; i <= 100; i++) {
console.log(i); 输出1、2、3、4、5、6……100
}
var i = 1;
while (i <= 100) {
console.log(i);
i++;
}
var i = 1;
do {
console.log(i);
i++;
} while (i <= 100)
常用的跳转语句如下。
continue : 跳过本次循环,执行下一次
break: 直接跳出循环.
习题: 输出1-100 如果是3的倍数就不输出.如果输出了61就停止输出
for(var i = 1; i<=100;i++){
if(i%3==0){
continue;
}
if (i==61) {
break;
}
console.log(i);
}