字面量和变量
字面量:
不可改变的量 对应变量 声明变量:var a;
var&let&const
通过 var 关键词声明的变量没有块作用域。可以使用let 关键词声明拥有块作用域的变量。
var声明的变量属于全局变量是window对象,且提升至顶端
var 在块中重新声明变量也会改变块外的变量
var x = 10;
// 此处 x 为 10
{
var x = 6;
// 此处 x 为 6
}
// 此处 x 为 6
let可以解决
var x = 10;
// 此处 x 为 10
{
let x = 6;
// 此处 x 为 6
}
// 此处 x 为 10
let ->块作用域
let i=10;
for(let i=0;i<10;i++)
{
*****
}
//此处i=10,而i=0只在循环内可用
相同作用域,重复声明let变量是不允许的
let i=10;
var i=0; //不允许!!!
const
与let相似,但不可以被重新赋值,但可以修改数组里面的值
const p=1:
p=p+1;//出错
const cars=["a","b","c"];
cars[0]="cc";
//同样重新赋值给数组也是错误的
cars=["a","b"] //错误
const必须在声明时赋值
数据类型
js中一共有6种数据类型
string number Boolean null undefined object
string
eg:var str="hello";
<!--使用单引号或者双引号都一样-->
注意:引号不能嵌套 “我说“今天。。””
eg: str ='我说"今天。。"'
同样,可以使用“\”来转义 str ="我说:\"今天。。\""
同时,alert("str")
要有双引号或者单引号。
number
检查变量类型:typeof console.log(typeof b);
最大值:Number.MAX_VALUE 超过最大:Infinity
"NAN"=not a number console.log(typeof NAN)
=number
js 计算浮点数时计算不准确 (二进制)
boolean
JavaScript中的两个基础的布尔类型的值:1.true 2.false
数值的 0、-0、特殊值的 null、NaN、undefined 以及空字符("")都会被解释为 false ,其他值则会被解释为 true
var bool=false; console.log(bool); false
运算符
算数运算符
字符串+数字=字符串
a="7"+8=78
i++ 先赋值后加 ++i 同时
var n1=10;
n=n1++;
//n=10;n1=11
逻辑运算符
非运算
可以用两次!!将数据类型转换为布尔值
var a=true;
a =!a; //取反操作
console.log("a="+a);
"a"=false
var b =10;
b=!b;//number变成了boolean 类型转换
与运算
如果两个值都为true,则返回后面的
如果两个值都为false,则返回前面的
var result = 2 && 1;
//result = 1
var result = 0 && 1;
var result = 1 && 0;
//result = 0
var result = NAN && 0;
//result = NAN
var result = 0 && NAN;
//result = 0
或运算
如果第一个值为true,则直接返回第一个值
如果第一个值为false,则直接返回第二个值
比较运算符
对于非数值进行比较时,会将其转换为数字在进行比较
console.log(1 >=true) //true
console.log(10 >=null) //true null=0
console.log(10 <="hello") //false "hello"=NAN
//任何值与NAN比较都是false
console.log("1" > "2") //true
//如果两边都是字符串,会比较字符的Unicode的编码
任何值与NAN比较都是false
如果两边都是字符串,会比较字符的Unicode的编码
比较的时候时一位一位的比较
abc?cbc 如果两位一样,则比较下一位 ,借用英文排序
unicode编码
在字符串中使用转义字符输入\u+四位编码(六进制)
在网页中 使用 &#编码(注意这里是十进制)
相等运算符
== 比较两值,当两边类型不一样时,就转换为相同的类型,再比较。一般转换为number.
undefined 和null 相等
NAN不和任何值相等,包括其本身可以通过isNAN()函数判断是否时NAN
=== 全等 ,不会做类型转换
!== 不全等
条件运算符
条件表达式?语句1:语句2;
条件表达式运行结果为true,执行语句1,返回结果
为false,执行语句1,返回结果
eg:var max = a > b ?a:b;
符号优先级
&&优先于||