var 变量名=值;
2.变量命名的规范
**变量名也叫:**标识符
只能由数字、字母、下划线和$符号组成,但是不能以数字开头
**不可以使用JS中的关键字和保留字
关键字:被JS语言赋予了特殊含义的单词
保留字:现在还没有被JS使用,但是将来可能会被使用的单词
www.runoob.com/js/js-reser…
top、new、this、delete关键字需要记住**
使用驼峰式和下划线式命名法
驼峰:myDemoLIst
下划线:my_demo_list
六、数据类型(***)
据类型分为基本数据类型(简单数据类型)和引用数据类型(复杂数据类型)
基本数据类型 | number | 数字/数值 | 表达整数或浮点数 | | string | 字符串 | | | boolean | 布尔类型 | | | undefined | 未定义 | 变量声明但未赋值的一种状态 | | null | 空 | 什么都没有 |
检测变量存储的数据的类型 typeof typeof返回类型是String类型
typeof(变量); typeof后面跟圆括号,此时是一个函数,
typeof 变量; 运算符方式
七、运算符
1.算术运算符
(1)加法 +
加号除了在数字中具有加法的作用,在非数字的值之间也具有连接字符串的作用,得到的结构都是字符串
var num1 = 100;
var num2 = 121;
var num3 = num1 + num2;
console.log(num3); //221
var n = "124";
var num4 = n + num1;
console.log(num4); //124100
var num6 = num1 + num2 + n;
console.log(num6); //221124
var num6 = num1 + (num2 + n);
console.log(num6); //221124
(2)减法 -
console.log(55-22);
console.log(4-22);
var num7=19;
var sum=num7-n;
console.log(sum); //19
var s='abc';
var sum2=num7-s;
console.log(sum2); //NaN (Not a Number)
console.log(typeof sum2); //number
(3)乘法 *
console.log(55*22); //1220
console.log(4*22); //88
console.log(num7*n); //NaN
(4)除法 /
console.log(55/22); //2.5
console.log(66/2); //33
console.log(num7/n); //NaN
console.log(num7/s); //NaN
console.log(num7/n); //NaN
console.log(num7/s); //NaN
console.log(num7/s);//NaN
(5)取余 %
console.log(55%22); //11
console.log(66%2); //0
console.log(65%2); //1
console.log(num7%n); //NaN
NaN数据类型为number
在JS语言中NN表示的是数字的一种不正常状态,一般会在计算出错时出现
NaN 是一个特殊的值,表示一个无效的数值,在计算中,如果结果不是数字,就会返回NaN
NaN 是一个全局变量,可以给它赋值,也可以直接使用
通过isNaN()函数来判断一个值是否为NaN 返回结果为true/false
var num8=NaN;
console.log(num8); //NaN
console.log(typeof num8); //number
console.log(isNaN(num8)); //true
console.log(isNaN(num7)); //false
console.log(isNaN(s)); //true
console.log(isNaN(n)); //false
2.赋值运算符
= += -= *= /= %=
算术运算符优先级大于赋值运算符
3.比较运算符
**> 、< 、>= 、<= 、== 、=== 、!= 、!==**
由比较运算符组成的表达式为:**比较表达式**。比较表达式返回的结果为**boolean**,也就是说程序只要执行了比较操作得到结果只能是true / false。
10>5; // true
10<5; // false
10>=5; // true
10>=10; // true
10<=5; // false
10<=10; // true
10==10; // true
10=='10'; // true 等值判断,只判断值,不判断数据类型
10==='10'; // false 全等判断,值和数据类型都会判断
10!='10'; // false 不等值判断
10!=='10'; // true 不全等判断
4.逻辑运算符
&& 、|| 、!
&&运算符优先级大于||
逻辑表达式的结果为boolean
&& (与)同时判断多个表达式,必须是所有的表达式结果都是true才会得到true,否则结果为false
10>5 && 10<20; // true
10>5 && 10<5; // false
10<=5 && 10<5; // false
||(或)同时判断多个表达式,只要至少有一个表达式的结果都是true得到的结果就为true,否则结果为false。
10<5 || 10>20; // false
10>5 || 10<5; // true
10>5 || 2<5; // true
!(非)逻辑非表示对结果的否定,进行取反的操作,本身是true的会变成false,本身是false的会变成true
5.一元运算符(自增自减运算符)
i++ 、++i 、i-- 、--i
程序在运行过程中我们需要执行一些记录次数的操作,这时候我们就可以使用自增/自减运算符。
num++/++num的区别?
num++:先执行,再计算
++num:先计算,再执行
6.三元运算符(三目运算符)
语法:条件?表达式1(条件成立时执行):表达式2(条件不成立时执行)
八、数据类型转换
1.强制类型转换——显式转换
(1)转换为:string
(2)转换为:number
(3)转换为:boolean
2.自动类型转换——隐式转换
(1)转换为:string
任何数据是字符串相加都是字符串的拼接操作,得到的结果也都是字符串
(2)转换为:number
对数字类型的自动转换我们可以使用:
-
直接在要转换的内容前加上”+”;
-
可以使用-、*、/、%、>、<等将字符串转换成number
(3)转换为:boolean
逻辑运算符 ! 的操作
九、流程控制语句
顺序、分支、循环
if条件分支结构
1.if语句(单分支)
if(条件表达式){
//条件表达式结果为true时执行代码块
}
2.if...else语句(双分支)
if(条件表达式){
//条件表达式结果为true时执行代码块
}else{
//条件表达式结果为false时执行代码块
}
//判断一个年份,判断闰年还是平年
var year = prompt("请输入一个年份");
if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0){
alert(year + "是闰年");
}else{
alert(year + "是平年");
}
3.if...else if语句(多分支)
if(条件表达式){
// 条件表达式结果为true时执行代码块
}else if(条件表达式){
// 条件表达式结果为true时执行代码块
}else{
// 条件表达式结果为false时执行代码块
}
//判断一个数字,是偶数还是奇数
var num = prompt("请输入一个数字");
if (num == "" || num==null || isNaN(num)) {
alert("请输入一个正确的数字")
} else if (num % 2 == 0) {
alert(num + "是一个偶数")
} else {
alert(num + "是一个奇数")
}
switch条件分支结构
适合做等值判断
switch的匹配是全等匹配
结构:
switch(变量:判断的值){
case 值1:
//如果变量的值和case的值1全等,则会执行此处的代码
break;
case 值2:
//如果变量的值和case的值2全等,则会执行此处的代码
break;
case 值3:
//如果变量的值和case的值3全等,则会执行此处的代码
break;
default:
//如果变量的值和case的值都不全等,则会执行此处的代码
break;
}
//根据用户输入的数字判断今天星期几
var num = prompt("请输入一个数字");
switch(num){
case 1:
alert("星期一");
break;
case 2:
alert("星期二");
break;
case 3:
alert("星期三");
break;
case 4:
alert("星期四");
break;
case 5:
alert("星期五");
break;
case 6:
alert("星期六");
break;
case 7:
alert("星期日");
break;
default:
alert("输入有误,请输入1-7的数字");
break;
}
switch语句中break是必须的,如果缺失break会发生switch穿透(case穿透)。
break语句作用是为了跳出switch。
switch穿透(case穿透)
在
switch语句中,"case 穿透"是指当一个case分支中的代码执行完毕后没有遇到break语句而是继续执行下一个case分支的代码的情况。这种现象可能会导致意想不到的结果,因为即使后续的case条件不匹配,其对应的代码仍然会被执行。当缺失了
break语句时,程序会顺序执行匹配到的case分支,并继续执行后续的case分支,直到遇到break或者switch结束。这种情况下,程序的执行路径会穿透多个case分支,可能与我们预期的逻辑不符。为了避免
case穿透问题,通常建议在每个case分支的末尾添加break语句,以确保在执行完相应的分支代码后跳出switch语句,避免程序继续向下执行其他case分支的代码。总之,
case穿透是指在switch语句中由于缺少break语句而导致程序从一个case分支顺序执行到下一个case分支的情况,这可能会引起逻辑错误和程序行为异常。
if分支语句和switch分支语句区别
if分支语句适合做区间判断和等值判断
switch分支语句做等值判断,不推荐做区间判断
互换两个变量的值
1.通过第三方变量实现
针对任何类型的数据
var c = a;
a = b;
b = c;
console.log(a);
console.log(b);
2.通过运算符的方式来实现
最后前端到底应该怎么学才好?
如果你打算靠自己摸索自学,那么你首先要了解学习前端的基本大纲,这是你将要学习的主要内容,理解以及掌握好这些内容,便可以找到一份初级的前端开发工作。你还需要有一套完整的前端学习教程,作为初学者最好的方式就是看视频教程学习,初学者容易理解接受。
不要选择买书学习,这样的方式没有几个人能学会,基本都是看不下去书,也看不懂书。如果喜欢看书的学弟,可以买一些经典的书籍作为辅助即可,主要还是以看教程为主。每天抽出固定几个小时学习,做好长期学习的准备。学习编程并不是每天光看视频,你学习编程最重要的目的是为了编写软件产品,提供给大众使用,所以用手写出代码实现功能才是我们要做的事情。