JS变量、js语法、运算符和逻辑运算
目录
一、 变量
二、值
三、语法
四、运算符
五、逻辑运算
六、 判断
一、 变量
JS文件
- 外部文件:
<script src='xxx.js'> </script>引入名为xxx.js的外部文件 - 内部文件:在
<script></script>标签内部填写JS代码即为内部文件 - 假如又写src又在标签内部写了代码,那么只执行外部文件
- 有时候
<script lang="tgp">语言类型会故意写成其他字符,让其内部代码不运行,需要用到时再详细写
变量是什么
- 变量是容器,用来存储数据,以便后续使用数据
- 声明变量的方法:
var a = 3、let b = 4、const c = {a:1,b:2}var、let、const都是声明变量的关键字 - 声明变量就是在内存内为变量申请一个存储空间
- 声明变量时的等号并非运算符,而是把等号后面的值赋给前面的变量
- PS:JS语句尽量用分号结束,JS解释器按照分号来识别一行语句,最好写分号
变量命名规范
- 不能以数字开头,可以用字母,下划线,$符号来开头
- 除开头外其他字符可以为数字
- 关键字、保留字不能用于变量命名
- 语义化,变量命名一定要有意义,或者有结构化
- 企业中一般都有明确的命名规定,如JS_header、J-header
- 命名需要遵循小驼峰法,首个单词字母小写,后续单词首字母大写
- 尽量不要用拼音或拼音缩写命名,上班会被同事锤
二、值
- js中值分为原始值和引用值(数据类型)
原始值
- 原始值又叫基本类型
- 包含Number、String、boolean、undefined、null、Symbol、Biging
- JS是通过值来确定类型,例如
var a = 1 // Number类型、var b = 'hi' // String类型 - 这种语言又叫做弱类型语言,一般弱类型语言都是动态语言,一般动态语言都是脚本语言,例如JS、PHP
- 强类型语言需要先确定类型再声明值,所以强类型语言又叫静态语言,编译型语言一般都是强类型语言
布尔值
- true真、false假
- 计算机的世界里只有非真既假,非假既真
undefined
- 一般指未被定义的,例如
var a这里的a此时就是undefined
null
- null代表空值,一般在初始化组件、函数、销毁函数、占位、等地方会用到
引用值
- JS中引用值只有Object一种
- Object中有Array、function、date、ReaExp(正则表达式)
栈内存和堆内存
- 栈内存 Stack,堆内存 Heap
- 栈内存,存放原始值,先进后出,永久保存不可更改,如果某个基本类型被重新赋值,那就会在栈内存中重新开辟空间存放
- 堆内存,存放引用值,把地址存在栈内存,或者说指向栈内存
三、JS语法
语句
- 语句用分号区分,也可以不加,JS会自动帮你添加分号
- for、if、switch、function语句不加分号
- 运算符两边都有空格
错误
- 语法错误:出现语法错误时,在错误代码同一作用域内的所有代码一行都不会执行,SyantaxError
- 通用错误:出现通用错误,错误代码后续的代码不会执行,ReferenleError
- 代码块与代码块之间的错误不会相互影响
四、运算符
- 括号运算 > 普通运算 > 赋值
+ 加号 数字运算
-
任何数据类型的值 + 字符串都等于字符串(字符串拼接)
-
'str' + 1 = 'str1'
/ 除号运算符
0 / 0等于NaNNaN是数字类型但它不是一个明确的数字1 / 0等于infinity正无穷 它也是数字类型同样的- infinity也是
% 取余预算符
5 % 2 = 15除2还剩1
交换值的方法
-
一般可以用中间变量
let a = 1;let b = 2、let c = a; let a = b即可交换 -
假如不用中间变量,可以
a = a + b; b = a - b此时b = a再用a = a - b即可交换
++、--运算符
-
var a = 1a = a + 1与a++的效果是一样的 -
console.log(a++) // a = 1a++,先打印后运算 -
console.log(++a) // a = 2++a,先运算后打印 -
需要注意看符号在哪里
-
代码:
-
let a = 4; let b = --a + a++ console.log(a,b) // (4,6)
>、<、>=、<=比较运算符
let bool = 1>2bool = false 因为1不大于2- 纯数字,number直接和number进行比较
- 数字和字符串,先把string转换成number再让number和number之间进行比较
- 字符串和字符串,比较的是字符串对应的ASCII码(网上查)
==和===比较运算符
- 相等:
==不看数据类型,只要值相等,就想等num 1和string '1'相等 - 全等:
===既要看数据类型,又要看值,开发基本都用这个 NaN !== Nan // trueNaN 与包括自己在内的任何东西都不相等
&&、||、!逻辑运算符
-
假值有:
undefined、null、NaN、''、0、false,除了这几个值外其他值都为真 -
&&是并且的意思,&&两边都必须满足条件才行,优先级要大于|| -
遇到真值往后走,遇到假值或走到最后则返回当前值
-
let a = 1 && 2 && undefined && 10a返回undefined -
||是或者,||两边有一边满足条件即可- 遇到假值外后走,遇到真值或走到最后,返回当前值
let a = 0 || null || 1 || 0a 返回 1
-
!代码:let a = !1 // false因为 1 是 true,1的反值为false