JS语法
- JS中严格区分大小写
JS中每条语句以分号 ; 结尾。 如果不加分号,浏览器会自动添加,但会消耗系统资源。
有时候浏览器会加错分号。
- JS忽略多个空格和换行---- 对代码进行美化和格式化。例如: xxx.min.js
标识符
JS中所有可以自己命名的都可以称为标识符
- 如变量名,函数名,属性名都是标识符
命名一个标识符遵循以下规则:
- 可以含有字母,数字,_ ,$。
- 标识符不能以数字开头
- 标识符不能是ES中的关键字或者保留字
- 标识符一般采用驼峰命名。
首字母小写,每个单词开头字母大写。其余字母小写
- JS 底层保存标识符时实际上采用的 Unicode 编码。
理论上,所有的UTF-8中含有的内容都可以作为标识符
数据类型
数据类型就是字面量的类型。在JS中有6中数据类型
- String 字符串
- Number 数值
- Boolean 布尔
- Null 空
- Undefined 未定义
- Object 对象 → 引用数据类型
String 字符串
- 字符串使用需要双引号或单引号
- 相同引号不能嵌套。单引号可以嵌套于双,双引号可嵌套于单引号
转义字符: \ 如: \"
- \"表示 "
- \'表示'
- \n表示换行
- \t表示制表符
Number 数值
- 在JS中所有的数值都是Number类型。【包括整数和浮点数】
JS中阔以表示的数字最大值:
Number.MAX_VALUE:1.7976931348623157e+308Number.MIN_VALUE【大于零的最小值】:5e-324
- 如果使用Number表示的数字超过了最大值。则返回一个
±Infinity:[±无穷]!穷哥? 使用
typeof检查Infinity也会返回number。typeof检查字符串返回 string;检查数值返回 number。- NaN是一个特殊的数字,表示 Not A Number。
typeof NaN也返回number - JS中整数的运算基本阔以保证精确
- 使用JS进行浮点数运算阔能得到不精确结果。精确度较高的运算不要使用
JS
Boolean 布尔值
- true 真
false 假
typeof为 boolean
Null 空值,Undefined 未定义
- Null值只有
null,使用typeof返回object - Undefined 未定义值只有
undefined。声明一个变量但不赋值或赋值undefined时:typeof返回undefined
- Null值只有
强制类型转换
将一个数据类型强制转换为另一个数据类型。
将其他数据类型转换为:String,Number,Boolean
1.转换为String【转换后数据类型都是String】
- 使用toString()方法。
- 调用被转换数据类型的
toString()方法。toString方法有返回值 - 该方法不会影响原变量,它会将转化的结果返回。
null和undefined没有 toString()方法。如果调用会报错使用String函数
- 调用String()函数,并将转换的数据作为参数返回;
使用String()函数做强制类型转换时。
- 对于Number和Boolean实际上就是调用toString()方法。
- 对于null和undefined,不会调用toString()方法。会将
null/undefined直接转换为"null/undefined"
2.转换为Number类型【转换后数据类型都是Number】
使用Number()函数转换
字符串转换为
Number。- 纯数字字符串,直接转换为数字
- 字符串中含有非数字内容,则转换为NAN。
- 如果是一个空串或者全是空格的字符,则转换为
零.
- 布尔类型转换为
数字1,0 - null转换为
数字0 - undefined转换为
数字NAN - 对两个值进行减,乘,除法.这两个值都会变成都会转换成
number
针对字符串转换为Number
parseInt(a,b)函数把一个字符串转换为一个整数。parseFloat(a,b)把一个字符串转换为一个浮点数对于非
String使用 parseInt()和parseFloat()会先转换成String,在转化为Number
3.转换为Boolean类型
使用Boolean()函数
数字 ---> 布尔
- 除了
0和NaN,其余都是true
- 除了
字符串 ---> 布尔
- 除了
空串,其余都是true
- 除了
null和undefined都会转换为false
隐式转换
- 对值进行两次取反,
!!a,与Boolean()原理一样
- 对值进行两次取反,
4.转换为其他类型
- 十六进制
0X88 - 八进制
077 - 二进制
0b11 "077"这种字符串,为了使浏览器表示正确,方法中使用参数。parseInt(a,10)解析成十进制.
运算符
通过运算符可以对一个或多个值进行运算,并获得运算结果
比如:
typeof是运算符,可以用来获得一个值的类型。它会将该值的类型以字符串的形式返回
number ,string , boolean ,undefined ,object
1. 算数运算符
当对非Number类型【除了字符串 加法 】的值进行运算时,会将这些值转换为Number然后进行计算;任何值与NaN运算都是NaN
( + )加法
特殊:任何值与字符串相加都转化为字符串,后进行
拼串操作。利用这一特点,进行任意数据类型
隐性的String类型转换 【实际上也是调用String()函数】:
reg = reg + "";===>typeof reg ---> string
result = 1 + 2 + "3"; // 33
result = "1" + 2 + 3; //123( - * / )减,乘,除法
对两个值进行减,乘,除法.这两个值都会变成都会转换成
number,利用这一特点进行隐式Number转换-0,*1,/1三种方式。原理和Number()一样- ( % )取模运算【取余数】
2. 一元运算符
只需要一个操作数
+:不会对数字产生影响
-: 对数字符号进行取反
对于非Number类型:它会先转换为Number,然后运算。对一个其他数据类型使用+,将其转换为number
var result = 1 + "2" + 3; //123
var result = 1 + +"2" +3; //6
var a = + "5";
console.log(typeof a);//number3. 自增,自减
自增:
- 使变量在自身的基础上增加1.
- 一个变量自增后,原变量的值会
立即自增1.
后++(a++),前++(++a)
这两种自增,都会使原变量的值立即自增1
- 不同的是
a++和++a的值不同a++的值等于原变量的值。(自增前)++a的值等于新值。(自增后)
var a = 10 ;
a = ++a + ++ a +a ;//11 +12+12=35
a = ++a + a++ + a ;//11 +11+12 =34自减:
- 使变量在
原值基础上减一
前--(--a) ,后--(a--)
这两种自减,都会使原变量的值
立即自减1
- 不同的是
--a和a--的值不同
var a = 10;
a = --a - a-- +a;//9-9+8 = 8
a = a++ - --a + ++a-a; //10-10+11-11 = 04. 逻辑运算符
!非:进行非运算,两次取反它的布尔值不会变化,可以利用这一特点进行布尔类型转换
&& 与:两个值中有一个false,就返回false; 第一个值为
false,不检查&&后面的值。第一个值为true会检查&&后面的值
|| 或:两个值都为false,返回false; 第一个值为
true,不检查||后面的值。第一个为false会检查||后面的值
非布尔值的与,或。【先将其转换为布尔值,然后再运算,并返回原值】
与:- 第一个值为true,必然返回第二个原值
第一个值为
false,直接返回第一个值[返回第一个为false的值]{没false,默认第二个为false?/!滑滑滑}
//两个值都为true,返回后面true的原值
var a = 22&&10; // a =10;
//其中有false,返回靠前false的原值
var a = 0&&88; //a =0;
//NaN和null,undefined满足上面规则
var a = NaN && null; // a = NaN
console.log('a = '+a);或:- 第一个值为true,直接返回第一个值
- 第一个值为
false,直接返回第二个值
var a = 0||56; // a = 56
var a = 77||88; //a = 775. 赋值运算符
=
+=: a += 3; ---> a = a+3;
-=: a -= 3; ---> a = a-3;
*=: a *= 3; ---> a = a乘3;
/=: a /= 3; ---> a = a/3;
%=: a %= 3; ---> a = a%3;
6. 关系运算符
通过关系运算符,比较两个值的大小关系,如果成立返回true,否则返回false
大于号
>; 大于等于>=;小于<; 小于等于<=判断
符号左边的值是否**右边的值。成立返回true.非数字进行比较时,会先转换成数字,再进行比较。
1 > "0";//true任何值和
NaN做运算都是false如果符号两侧都是字符串时,则不会将其转换为数字,而会分别比较字符串中的
Unicode编码.- 比较字符串编码时,是一位一位进行比较
- 如果比较的两位相等,则各自比较延后的一位。可以用来英文排序,比较中文没有意义
console.log("11"<"5");//true 1的编码小于5的编码 console.log("bbc"<"b");//false bc的编码大于`空`的编码比较字符串型的数字时,进行类型转换。
console.log( "24234" < +"5"); // false
7. Unicode 编码
- 在字符串中使用
转义字符输入Unicode编码 “\U四位编码,这里的编码是16进制”- 网页中使用Unicode编码 “
&#编码;,这里的编码是十进制”
8. 相等字符串
双等号: 判断两个值是否相等。相等返回true,不等返回false. 如果两个值类型不同,会自动进行转换成
相同的数据类型,然后比较。【转换的数据类型情况不同】
!=:不相等,也会对变量进行类型转换。
===:全等,用来判断两个值是否全等。和相等类似,但不同的是,它不会做自动的类型转换。 如果两个值的
类型不同,直接返回false
!==:不全等。不会自动类型转换。 如果两个值的
类型不同,直接返回true
== :
console.log(true == "1");//true 字符串转换成数字1,true转换成1
console.log("1"==1); //true 字符串转换为 数字1
console.log(null ==0 ); //false. 不知道转换成什么了,应该是都转换成object了
console.log(null == undefined); //true .
console.log(NaN == NaN); // false NaN不与任何值相等
//通过 isNaN()函数是否是 NaN。是,返回 true;否,返回false!= :
console.log(10 != 5); //true
console.log(10 != 10); //false
console.log('abcd' != 'abcd'); //false
//会进行自动类型转换
console.log('1' != 1); //false"===;!== ;"
console.log(10 === '10'); //false
console.log(10 !== '5'); //true9. 条件运算符
条件表达式?语句1:语句2;---->执行时,首先对条件表达式进行
求值。
- 如果该值为
true,则执行语句1,并返回执行结果。- 如果该值为
false,则执行语句2,并返回执行结果。如果表达式值为
非布尔值,会转换为布尔值,在执行后续操作
var max = a>b? a:b; //获取ab中的最大值10. 运算符的优先级
运算符优先级表格。
优先级可以使用
括号,改变优先级
此处评论已关闭