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+308
- Number.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. 运算符的优先级
运算符优先级表格。
优先级可以使用
括号,改变优先级
 
                             
                            
此处评论已关闭