JavaScript 是世界上最流行的语言之一,是一种运行在客户端的脚本语言(Script 是脚本的意思)
脚本语言:不需要编译,运行过程中由js解释器(js引擎)逐行来进行解释并执行
现在也可以基于Node.js技术进行服务器编程
浏览器分为两部分 渲染引擎和JS引擎
js有3种书写位置,分别为行内、内嵌和外部
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Documenttitle>
<script src="js/test.js">script>
<script>
alert("hello world1")
script>
head>
<body>
<input type="button" value="唐伯虎" onclick="alert('秋香')"/>
body>
html>
1.内行式js
<input type="button" value="唐伯虎" onclick="alert('秋香')"/>
可以将单行或少量JS代码写在HTML标签的事件属性中(以on开头的属性),如: onclick注意单双引号的使用:在HTML中我们推荐使用双引号,JS中我们推荐使用单引号
可读性差,在html中编写JS大量代码时,不方便阅读;
引号易错,引号多层嵌套匹配时,非常容易弄混;
特殊情况下使用
2.内嵌JS
3.外部JS文件
<script src="js/test.js">script>
1、单行注释://
2、多行注释: /* …*/
为方便信息的输入输出,JS中提供了一些输入输出语句,其常用的语句如下:
方法 | 说明 | 归属 |
---|---|---|
alert(msg) | 浏览器弹出警示框 | 浏览器 |
console.log(mag) | 浏览器控制台打印输出信息 | 浏览器 |
prompt(info) | 浏览器弹出输入框,用户可以输入 | 浏览器 |
方法 | 说明 | 归属 |
---|---|---|
alert(msg) | 浏览器弹出警示框 | 浏览器 |
console.log(mag) | 浏览器控制台打印输出信息 | 浏览器 |
prompt(info) | 浏览器弹出输入框,用户可以输入 | 浏览器 |
白话:变量就是一个装东西的盒子
通俗:变量是用于存放数据的容器、我们通过变量名获取数据,甚至数据可以修改。
本质:变量是程序在内存中申请的一块用来存放数据的空间。
变量在使用时分为两步:
声明变量
//声明变量
var age;//声明一个名称为age的变量
赋值
age = 10; //给age 这个变量赋值为10
变量的初始化
var age =18; //声明变量同时赋值为18
有个叫的人在旅店登记的时候前台让他填一张表,这张表里的内容要存到电脑上,表中的内容有∶姓名、年龄、邮箱、家庭住址和工资,存储之后需要把这些信息显示出来,所显示的内容如下:我叫旗木卡卡西,我住在火影村,我今年30岁了,我的邮箱是[email protected],我的工资`2000
实现代码:
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Variable Practicetitle>
<script>
/*
Typic:
有个叫亚索的人住店的时候需要填写一张表,
这张表里的内容要存到电脑上,表中的内容有∶
姓名、年龄、邮箱、家庭住址和工资,存储之后需要把这些信息显示出来,所显示的内容如下:
我叫XXX,我住在XXX,我今年xx岁了,我的邮箱是[email protected],我的工资2000
*/
// 声明这些变量:姓名、年龄、邮箱、家庭住址和工资。
var name = '亚索'; //name
var age = 30; //age
var mailBox = '[email protected]'; //mailBox
var salary = 2000; //salary
var address = '地球村'; //adress
//按题目要求输出以上信息
console.log('我叫'+name+',我住在'+address+",我今年"+age+"了,"+"我的邮箱是"+mailBox+",我的工资是"+salary);
script>
head>
<body>
body>
html>
弹出一个输入框,提示用户输入姓名。
弹出一个对话框,输出用户刚才输入的姓名。
代码实现:
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>variablePractice02title>
<script>
/*
Typic:
1. 弹出一个输入框,提示用户输入姓名。
2. 弹出一个对话框,输出用户刚才输入的姓名。
*/
// 弹出一个输入框
var name = prompt('输入姓名')
//弹出一个对话框
alert('刚才输入的姓名是:'+ name)
script>
head>
<body>
body>
html>
一个变量被重新赋值后,它原有的值就会被覆盖,变量值将以最后一次赋的值为准。
var age = 18;
age = 81; //最后的结果是81,18被81覆盖了。
同时声明多个变量时,只需要写一个var,多个变量名之间使用英文逗号隔开。最好用分号结束。
var age = 10, name = 'name',sex = 2;
情况 | 说明 | 结果 |
---|---|---|
var age;console.log(age); | 只声名 不赋值 | undefined |
console.log(age) | 不声明 不赋值 直接使用 | 报错 |
age = 10; console.log(age); | 不声明 只赋值 | 10 |
//2-3.声明变量的特殊情况
// 1 只声明 不赋值 结果是 不赋值,程序也不知道里面是什么 所以结果是 undefined 未定义的
var age; //只声明
console.log(age); //undefined
// 2 不声明 不赋值 直接使用 就是说没有这个变量 程序报错
// console.log(name1); //报错
// 3 不声明 只赋值
sex = 1;
console.log(sex); //1
由字母(A-Za-a)、数字(0-9)、下划线(_)、美元符号($)组成,如:userAge,num01,_name
严格区分大小写。var app;和var App;是两个变量
不能以数字开头。18age 是错误的
不能是关键字、保留字。例如:var、for、while
变量名必须有意义。MMD BBD nl ->age
遵守驼峰命名法。首字母小写,后面单词的首字母需要大写。
推荐翻译网站:有道 爱词霸
var 1; //错误写法
var 18age; //不能以数字开头
var &age; //错误
var theWorld; //驼峰
var for; //不能用关键字
var _age,$age; //正确
要求:交换两个变量的值(使用一个临时变量用来做中间存储)
var temp; //临时变量
var variableOne = 'apple1'; //第一个变量
var variableTwo = 'apple2'; //第二个变量
temp = variableOne; //把变量一给临时变量
variableTwo = temp; //
console.log(variableOne); //apple2
console.log(variableTwo); //apple1
为什么需要变量?
数据需要保存,变量就是用来存储数据的。
变量是什么?
变量就是一个容器,用来存放数据的,
变量的本质是什么?
变量是内存里的一块空间,用来存储数据。
变量怎么使用的?
使用变量时,一定要先声明变量,然后赋值。
声明变量的本质是去内存申请空间。
什么是变量的初始化?
声明变量并赋值
变量命名规范有哪些?
变量名尽量要规范,见名知意—驼峰命名法
交换2个变量值的思路?
通过临时变量来装换。
变量的主要作用:用于存放数据的容器
变量的初始化:声明一个变量并赋值,称为变量的初始化
变量的命名规范:
变量是如何在内存中存储:变量是程序在内存中申请的一块用来存放数据的空间。
交换变量案例:
3-1-2 变量的数据类型
变量是用来存储值的所在处,它们有名字和数据类型,变量的数据类型决定了如何将代表这些值的位存储到计算机的内存中。**JavaScript是一种弱类型或者说动态语言。**这意味着不用提前声明变量的类型,在程序运行过程中类型会被自动确定。
JS 的变量数据类型是只有程序在运行过程中,根据等号右边的值来确定的
var age = ; //这是一个数字型
var str = "Hello World"; //这是一个字符串
在代码运行时,变量的数据类型是由JS引擎根据等号右边的数据类型来判断的,运行完毕之后,变量就确定了数据类型。
JavaScript 拥有动态类型,同时也意味着相同的变量可用作不同的类型;
var x = 6; //x 为数字
var x = "Bill"; //x 为字符串
JS把数据类型分为两类:
JavaScript中的简单数据类型及其说明如下:
简单数据类型 | 说明 | 默认值 |
---|---|---|
Number | 数字型,包含 整型值和浮点型值,如21、0.21 | 0 |
Boolean | 布尔值类型,如true、false,等价于1和0 | false |
String | 字符串类型,如“张三”注意咱们js里面,字符串都带引号 | “” |
Undefined | var a; 声明了变量a 但是没有给值,此时a = undefined | undefined |
Null | var a = null; 声明了变量a 为空值 | null |
JavaScript 数值类型即可以用来保存整数值,也可以保存小数(浮点数)。
var age = 21; //整数
var Age = 3,14; //小数
最常见的进制有二进制、八进制、十进制、十六进制。
<script>
// 八进制 0~7,程序中以0开头表示八进制
var number1 = 010; //这是一个八进制数
console.log(number1); //装换为十进制就是: 8
// 十六进制,0~9 a~f 如:#fffff 数字前面加 0x 表示十六进制
var num = 0x99; //声明一个十六进制
console.log(num);
</script>
在JS中八进制前面加0,十六进制前面加0x
javascript中数值的最大和最小值
//JavaScript 中数值的最大值和最小值
alert(Number.MAX_VALUE); //1.7976931348623157e+308
alert(Number.MIN_VALUE); //5e-324
//数字型的三个特殊值
console.log(Number.MAX_VALUE * 2); //Infinity
console.log(-Number.MAX_VALUE * 2); // -Infinity
console.log('ZZQ' - 100); //nor a number
// isNaN() 这个方法用来判断非数字,并且返回一个值 如果是数字返回false 否则True
alert(isNaN(123)); //false
alert(isNaN(“zzq”)); //true
字符串可以是引导中的任意文本,其语法为 **双引号""**和 单引号"
var str1 = "name"; //使用双引号
var str2 = 'age'; //使用单引号
var str3 = 字符串; //报错,没使用引号,js没有这语法
因为HTML 标签里面的属性使用的是双引号,JS这里我们 推荐使用单引号
JS可以用单引号嵌套双引号,或者用双引号嵌套单引号**(外双内单,外单内双)**
var strOne = 'This is a "string"'; //用单引号包含双引号。
var strTwo = "This is a 'string'"; //双引号包含单引号
var strThree = 'This is a string"; //报错,不能单双引号搭配。
类似HTML里面的特殊字符,字符串也有特殊字符,我们称之为转义符。
转义符都是\开头的,常用的转义符及其说明如下:
转义符 | 解释说明 |
---|---|
“\n” | 换行符,n 是newline 的意思 |
\\ | 斜杠 \ |
\’ | ‘ 单引号 |
\" | “ 双引号 |
\t | tab 缩进 |
\b | 空格,b是blank 的意思 |
// 转义字符练习
alert('\t一世一轮回,一季一禅意。\n已是初秋时节,水田里的稻穗"尽染金黄"。\n早晚的天气虽很凉爽,无雨的中午还有些炎热。');
字符串是由若干个字符组成的,这些字符的数量就是字符的长度,通过字符串的 length 属性可以获取整个字符串的长度。
// 检测字符串的长度 length
var str = 'This is a string';
console.log('该字符串的长度是:'+str.length); //16
多个字符串之间可以使用 + 进行拼接,其拼接方式为 字符串+任何类型=拼接之后的新字符串
拼接前会把与字符串相加的任何类型转成字符串,再拼接成一个新的字符串
//字符串的拼接
console.log('王者' + '荣耀'); //王者荣耀
console.log('age:' + 18); //age:18
//数字型相加
console.log(12 + 12) //24
//字符串+数字型
console.log('12' + 12) //1212
//与变量相结合
var name = '李白';
var age = 18;
alert('My name is ' + name +',My age is ' + age); //My name is 李白,My age is 18
+号总结口诀:数值相加,字符相连
我们经常会将字符串个变量来拼接,因为变量可以很方便地修改里面的值。
变量是不能添加引号的,因为加引号的变量会变成字符串。
要求:弹出一个输入框,需要用户输入年龄,之后弹出一个警示框显示“你今年xx岁啦”
//要求:弹出一个输入框,需要用户输入年龄,之后弹出一个警示框显示“你今年xx岁啦”
var age = prompt("Please enter your age:"); //声明年龄,获取用户的年龄
alert('You are ' + age + ' years old!')
布尔类型有两个值:true 和 false ,其中true 表示真(对),而false 表示假(错)
布尔型和数字型相加的时候,true的值为1,false 的值为0。
var flag1 = true; // falge1 布尔型 1
var flag2 = false; // 0
console.log(flag1);
一个声明后没有被赋值的变量会有一个默认值undefined(如果进行相连或者相加时,注意结果)
//变量声明未给值 就是 undefined(未定义数据类型)
var str;
console.log(str); //undefined
var variable = undefined;
//undefined 和字符串相加
console.log(undefined + 'ZZQ'); //undefinedZZQ
//undefined 和数字型相加
console.log(undefined + 1); //NaN
一个声明变量给null值,里面存的值为空
//null 空值
var space = null; //里面的值为空
console.log(space + 'ZZQ') //nullZZQ
console.log(space + 1) // 1
typeof 可用来获取检测变量的数据类型
//typeof 用来获取变量的数据类型
var num = 10;
console.log(typeof num); //number
var str = 'zzq';
console.log(typeof str); //string
var flag = true;
console.log(typeof flag); //boolean
var variable = undefined;
console.log(typeof variable); //undefined
var timer = null ;
console.log(typeof timer); // object
//pormpt 取过来的值是字符型的
var age = pormpt('Please enter your age:')
console.log(age);
console.log(typeof age); //string
字面量是在源代码中一个固定的表示法,通俗来说,就是字面量表示如何表达这个值。
使用表单、prompt 获取过来的是数据默认是字符串类型的,此时就不能直接简单的进行加法运算,而需要转换变量的数据类型。通俗来说,就是 把一种数据类型的变量转换成另外一种数据类型
三种方式的转换:
方式 | 说明 | 案例 |
---|---|---|
toString() | 转成字符串 | var num =1; alert(num.toString()); |
Sring() 强制转换 | 转成字符串 | var num =1; alert(String(num)); |
加号拼接字符串 | 和字符串拼接的结果都是字符串 | var num = 1; alert(num + ‘我是字符串’); |
// 数字型转换为字符型
var num = 10;
// 第一种 toString();
var str = num.toString();
console.log('转换后:'+ num); //10
console.log(typeof str); //string
//第二种 String() 强制类型转换
var num1 = 100;
console.log('转换后:'+String(num1));
//第三种 利用 + 拼接字符串的方法是实现转换效果
console.log(num + "");
注意:
方式 | 说明 | 案例 |
---|---|---|
parseInt(string)函数 | 将string类型转换成整数数值型 | parseInt(‘18’) |
parseFloat(string)函数 | 将string类型转成浮点数值型 | parseFloat(‘3.14’) |
Number()强制转换函数 | 将string类型转换为数值型 | Number(‘12’) |
js隐式转换(- * /) | 利用算术运算隐式转换为数值型 | ’12‘ - 0 |
//1、parseInt(string)函数 将字符函数转换为数字函数
var age = prompt("Please enter your age:"); //输入框中输入的是String类型。
var strAge = parseInt(age);
alert('your age is :' + strAge);
alert(typeof strAge); // number
console.log(parseInt('3.14')); //3
console.log(parseInt('3.99')); // 3
console.log(parseInt('120px')); //120 会去掉单位
//2、parseFloat(string)函数 将string类型转成浮点数值型
console.log(parseFloat('2.23'));
console.log(parseFloat('3.99')); // 3
console.log(parseFloat('120px')); //120 会去掉单位
//3、利用Number
var str = '123';
console.log(Number(str));
//4、利用算数运算- * / 隐式转换
console.log('12' - 1); // 11
console.log('12' - '10'); //2
注意:
①弹出一个输入框( prompt),让用户输入出生年份(用户输入)
②把用户输入的值用变量保存起来,然后用今年的年份减去变量值,结果就是现在的年龄(程序内部处理)
③弹出警示框( alert),把计算的结果输出(输出结果)
var year = prompt('请输入出生年份:');
var result = 2020 - year;//隐式转换
alert(result);
计算两个数的值,用户输入第一个值后,继续单出第二个输入框并输入第二个值,最后通过弹出窗口显示出两次输入值相加的结果。
//计算两个数的值,用户输入第一个值后,继续单出第二个输入框并输入第二个值,最后通过弹出窗口显示出两次输入值相加的结果。
var num1 = prompt('Please enter the first value::');
var num2 = prompt('Please enter the second value:');
var result = parseInt(num1) + parseInt(num2); //将字符串转换为数值型
alert('The result of the addition is:'+result);
方式 | 说明 | 案例 |
---|---|---|
Boolean()函数 | 其它类型转成布尔值 | Boolean(‘true’); |
console.log(Boolean(''));// false
console.log(Boolean(0)); //false
console.log(Boolean(NaN)); //false
console.log(Boolean(null)); //false
console.log(Boolean(undefined)); //false
console.log(Boolean('zzq')); //true
console.log(Boolean(12)); //true
注意:
1、**说出5种简单数据类型:**Number、String、NaN、Null、undefined.
2、使用typeof获取变量的类型: console.log(typeof num);
3、说出1~2中装换为数值型的方法:
方式** | 说明 | 案例 |
---|---|---|
parseInt(string)函数 | 将string类型转换成整数数值型 | parseInt(‘18’) |
parseFloat(string)函数 | 将string类型转成浮点数值型 | parseFloat(‘3.14’) |
Number()强制转换函数 | 将string类型转换为数值型 | Number(‘12’) |
js隐式转换(- * /) | 利用算术运算隐式转换为数值型 | ’12‘ - 0 |
4、说出1~2中装换为字符型的方法
方式 | 说明 | 案例 |
---|---|---|
toString() | 转成字符串 | var num =1; alert(num.toString()); |
Sring() 强制转换 | 转成字符串 | var num =1; alert(String(num)); |
5、说出什么是隐式装换:
隐式转换, 就是不需要加强制转换, 系统会自动做这个操作
1、概述
计算机不能直接理解任何除机器语言以外的语言,所以必须要把程序员所写的程序语言翻译成机器语言才能执行程序。程序语言翻译成机器语言的工具,被称为翻译器。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dwFLJlEA-1610295424928)(C:\Users\ZZQ18\AppData\Roaming\Typora\typora-user-images\image-20210110012129536.png)]
2、标识符:
、就是指开发人员为变量、属性、函数、参数取的名字,
标识符不能是关键字或保留字
3、关键字:
是指JS本身已经使用了的字,不能再用它们充当变量名、方法名。
包括:break、case、catch、continue、default、delete、do、else、finally、for、function、if、in、instanceof、
new、return、switch、this、throw、try、typeof、var、void、while、with等。
4、保留字
实际上就是预指的“关键字”,意思是现在虽然还不是关键字,但是未来可能会成为关键字,同样不能使用它们当变量名或方法名。
包括:boolean、byte、char、class、const、debugger、double、enum、export、extends、fimal、float、goto、implements、import、int、interface、long、mative、package、private、protected、 public、 short、static、 super、synchronized、 throws、transient、volatile等。
运算符(operator)也称为 **操作符 **,是用于实现赋值,比较和执行算数运算等功能的符号。
JavaScript 中常用的运算符有:
概念:算术运算符使用的符号,用于执行两个变量或值的算术运算。
运算符 | 描述 | 实例 |
---|---|---|
+ | 加 | 10 + 20 = 30 |
- | 减 | 10 - 20 = -10 |
* | 乘 | 10 * 20 = 200 |
/ | 除 | 10 / 20 = 0.5 |
% | 取模(取余数) | 9 % 2 = 1 (返回除法的余数) |
console.log(1 + 2); //3
console.log(2 - 1); //1
console.log(2 * 2); //4
console.log(9 % 2); //1
一个数的余数是0,就说明这个数能够被整除,这就是% 取余运算符的主要运算。
注意:
算术运算符优先级:先乘数,后加减,有小括号先算小括号里面的。
①浮点数的精度问题:
浮点数的最高精度是17位小数,但在进行算数计算时其精确度远远不如整数
var result = 0.1 + 0.2; //结果不是0.3,而是 0.30000000000000004
console.log(0.7 * 100); //结果是:7.000000000000001
//浮点数不能拿来比较相等
var floatNumber = 0.1 + 0.2;
console.log(0.3 == floatNumber); //false
② 表达式和返回值
表达式:是由数字、运算符、变量等以能求得数的有意义排列方法所得的组合。
简单理解:是由数字、运算符、变量等组成的式子。
表达式最终都会有一个结果,返回给我们,我们称为返回值
console.log(1 +1); // 1 + 1 是表达式 ,2 是返回值。
如果需要反复给数字变量添加或减去1,可以使用 **递增(++)和递减(–)**运算符来完成。
在JavaScript中,递增(++)和递减( --)既可以放在变量前面,也可以放在变量后面。放在变量前面时,我们可以称为前置递增(递减)运算符,放在变量后面时,我们可以称为后置递增(递减)运算符。
注意:
递增和递减运算符必须和变量配合使用
1、前置递增运算符
++num 前置递增,就是自加1,类似于 num = num +1 ,但是++num 写起来更简单。
使用口诀:先自加,后返回值
//前置递增运算符 ++ 写在变量的前面
var age = 10;
++age; //类似于 age = age + 1
console.log(age); //11
//先加1 ,后返回值
var a = 10;
console.log(++a + 10); //21
2、后置递增运算符
num 后置递增,就是自加1 ,类似于num = num +1 .
使用口诀:先返回原值,后自加
//后置递增运算符 ++ 写在变量的后面
var num = 10;
num++; //num = num +1
console.log(); //11
注意:前置递增和后置递增如果单独使用 效果是一样的
//这里后置递增先返回值,后自加
var num = 18;
console.log(num++ + 2); //注意结果是20,先返回值,用原值18相加
console.log(num + 2); //21,这里num已经完成了后增,这时的num是19。
案例
var a = 10;
++a; //11
var b = ++a +2; //12 +2
console.log('b:'+b);//14
var c = 10;
c++; //11
var d = c++ +2; //11++++++++++++++++++++
console.log('d:'+d) //13
var e = 10;
var f = e++ + ++e; //e++ = 10, e = 11 ,++e = 12 说明:e++先返回原值10,后递增e=11,++e是先递增,后返回值
console.log('f:'+f);//22
总结:
1、比较运算符的概念
概念:比较运算符(关系运算符)是 两个数据进行比较时所使用的运算符,比较运算后,会返回一个布尔值(true/false)作为比较运算的结果。
运算符名称 | 说明 | 案例 | 结果 |
---|---|---|---|
< | 小于号 | 1 < 2 | true |
> | 大于号 | 1 > 2 | false |
>= | 大于等于号(大于或者等于) | 2>=2 | true |
<= | 小于等于号(小于或者等于) | 3<=2 | false |
== | 判断号(会转型) | 18 ==18 | true |
!= | 不等于 | 18 != 18 | false |
=== !== | 全等 要求值和数据类型都一致 | 18 === ’18‘ | false |
代码练习:
console.log(1 < 2); //true
console.log(2 >= 4);//false
// 程序中 = 是赋值,== 是等于 == 只要求值相等
console.log(3 ==3); //true
console.log('zzq' == 'ZZQ'); //false
// == 隐式转换 会把字符型自动转换为数字型然后进行比较
console.log(18 == '18') //true
// != 不等于
console.log(18 != 18); //false
// === 全等 类型和值都一样
console.log(12 === 12); //true
console.log('zzq' === 'zzq'); //true
console.log(18 !== 18); //false
"=" 总结
符号 | 作用 | 用法 |
---|---|---|
= | 赋值 | 把右边给左边 |
== | 判断 | 判断两边值是否相等(注意此时有隐式转换) |
=== | 全等 | 判断两边的值和数据类型是否完全相同 |
console.log(18 -- '18'); //true
console.log(18 === '18'); //false
概念: 逻辑运算符是用来进行布尔值运算的运算符,其返回值也是布尔值,后面开发中经常用于多个条件的判断
逻辑运算符 | 说明 | 案例 |
---|---|---|
&& | “逻辑与”,简称“与” and | true && false |
|| | “逻辑或”,简称“或” or | true || false |
! | “逻辑非”,简称“非” not | ! true |
代码练习:
// && 逻辑与 and 逻辑与:两个都是true,返回true,否则返回false
console.log(3 > 5 && 8 < 10); //false
console.log(5 > 1 && 5 > 3); //true
// || 逻辑或 or 逻辑或:只要有一个是true,返回true,否则false
console.log(4 >= 4 || 2 < 1); //true
console.log(2 > 4 || 2 >5); // false
// ! 逻辑非 not 逻辑非:相反
console.log( !(4 < 6)); // 4<6 本来是true 加! 后变为false
案例:
//逻辑运算符练习
var num =16;
var str = 'This is a string';
console.log(str.length); //获取字符的长度 16
console.log(num > 5 && str.length >= num); //true
console.log(num < 5 && str.length >= num); //false
console.log(!(num < 20)); //+false
console.log(!(num < 20 || str.length == num)) //false
短路运算(逻辑中段)
短路运算的原理:当有多个表达式(值)时,左边的表达式值可以确定结果时,就不再继续运算右边的表达式的值。
1、逻辑与
// 如果表达式1为真,则返回表达式2,
// 数字中:除了0,其它的数字都是true
// 字符串中:除了""(空字符串),其它的都是true
console.log(123 && 456); //返回456
// 如果表达式为假,则返回表达式1
console.log(0 && 1); //返回0
2、逻辑或
// 如果表达式1为真,则返回表达式1
// 如果表达式1为假,则返回表达式2
console.log("zzq" || 123); //zzq
console.log("" || 123); //123
逻辑中断在程序中很重要,它会影响我们的程序的运行结果:
var num = 0;
console.log(123 || num++);
console.log(num); //0
概念:用来把数据赋值给变量的运算符。
赋值运算符 | 说明 | 案例 |
---|---|---|
= | 直接赋值 | var usrName = ‘zzq’; |
+=、-= | 加、减一个数后在赋值 | var age = 10; age+=5; //15 |
*+、/+、%= | 乘、除、取模后再赋值 | var age =2; age*=5; //10 |
相关代码:
var num = 10;
num += 5 ;
console.log(num); //15
num *= 5;
console.log(num); //75
num /= 5;
console.log(num); //15
var num1 = 10;
num1 %= 3;
console.log(num1); //1
优先级 | 运算符 | 顺序 |
---|---|---|
1 | 小括号 | () |
2 | 一元运算符 | ++ – ! |
3 | 算术运算符 | 先 * / 后 + - |
4 | 关系运算符 | > >= < <= |
5 | 相等运算符 | == != === !== |
6 | 逻辑运算符 | 先 && 后 || |
7 | 赋值运算符 | = |
8 | 逗号运算符 | , |
相关练习:
//练习一
console.log(4 >= 6 || '人' != '阿凡达' && !(12 * 2 ==144) && true); //true
var num = 10;
console.log(5 == num / 2 && (2 + 2 * num).toString() == '22'); //true
//练习二
var a = 3 > 5 && 2 < 7 && 3 == 4;
console.log(a); //false
var b = 3 <= 4 || 3 > 1 || 3 != 2;
console.log(b); //true
var c = 2 === '2';
console.log(c); //false
var d = !c || b && a;
console.log(d); //true