可变变量:容器JS是弱类型语言,所以可以放任何类型的值声明变量:在ES6之前,已经使用Var来声明变量,ES6增加了一个letconst列:leta;变量声明leta=5;变量初始化||变量声明和赋值Var特性:支持重复声明列:Vara=5;变量a=6;缺少申报栏:a=5;系统或浏览器会添加一个不受语句影响的Var,它是一个强制性的全局变量!picture.pngLet特性:不允许在同一作用域内重复声明列:leta=5;一=10;修改变量Const特性中的值:声明一个属于不可修改类型变量的常量,在ES6之前会报错。表示常量列:VarB=aconst声明变量必须初始化数据类型JS中的每个值都必须属于某种数据类型简单数据类型:原始数据类型||简单值ES6之前:undefinedunmberstringbooleannull新增:symbolcomplexdata类型:合成数据类型||复数对象undefined解释:undefined:undefined声明变量未赋值,函数无返回值undefined关于undefined中的BUG,声明变量未赋值:例子:letA;log(a)打印为Theundefinedvariableisnotdeclared:example:log(a);错误xxx是未定义的日志(trpeofa);如果打印为undefined,它将返回undefined。该变量未声明。未分配的函数没有返回值。返回值对null没有明确的解释:ECMA认为undefined是从null派生出来的,如果不做精确比较是相等的。console.log(undefined==null)打印为true。关于null的BUG:console.log(typeofnull)打印为objectundefined和null的区别:undefined有容器但没有内容,而null没有容器也没有内容boolean解释boolean(判断)有两个值:true(真)假(假)||!!添加待检测的值会返回false:""emptystring''stringtemplate``0falseundefinednullNaN(notaunmbernon-number)unmber的解释:1000.2-1NaN:不等于任何数字,包括NaN本身的类型是unmberNaN涉及到的任何计算值都是NaNisNaN()判断一个值是否为非数字传入一个数字:返回false传入一个非数字:返回trueString解释:''""``这三个字符串不能相互嵌套。两种打印方式:letname="N",age="N"1.console.log("我的名字"+姓名+"今年"+年龄);//我今年叫NN2.console.log(`我今年叫${name}${age}`);//我今年叫NN运算符(operator)赋值运算符=+=-=*=/=例:leta=1b=2a=a+b缩写a+=b一元运算符(自增自减运算符)++--例子:n=n+1缩写n++例子1:leti=0//0letj=i++//0+1console.log(ji)打印为01例子2:leti=0//0+1letj=++i//iconsole.log(ji)打印为11自增自减规则:i++i--先取值后自增||然后递减++i--i先自增||0i++;console.log(i)打印为1个逻辑运算符和&&或||不是!&&一假全假||一真全真&&:表达式1&&表达式2step1:首先判断表达式1的值是否为假,如果是则返回表达式1的值step2:如果表达式1的值为真则判断表达式2的值是否为真,如果为真则判断表达式3,以此类推,如果为假则返回表达式2的值,以此类推。算术运算符+-*/%模(余数)关系运算符<=====<=>====:所有值都相等,数据类型也相等示例:console.log(5==》5")打印真console.log(5==="5")打印ForfalseASCLL代码65A97a三元运算符简单ifelse表达式1?表达式2:表达式3;解释:当表达式1为真时执行表达式2,当表达式2为假时执行表达式3示例:leta=5b=6a>b?console.log("a>b"):console.log("a
