js基础-2

###使用变量名的注意事项

####关键字(reserved word)

在 JavaScript 中已经定义过的字,使用者不能再将这些字作为变量名使用

>>>![](images/identifier_04.bmp)
>
>另外,还有三个词虽然不是保留字,但是因为具有特别含义,也不应该用作标识符:Infinity、NaN、undefined。

###变量提升
----
js运行时候会把所有变量收集,并放在js开头位置。(函数也会提升)
### 标识符
标识符是用来识别具体对象的一个名称。最常见的标识符就是变量名,
以及后面要提到的函数名。JavaScript语言的标识符对大小写敏感,所以a和A是两个不同的标识符。

>标识符有一套命名规则,不符合规则的就是非法标识符。JavaScript引擎遇到非法标识符,就会报错。
>>命名规范:
>- 第一个字符可以是任意Unicode(万国码)字母,以及美元符号($)和下划线(_)。
>- 第二个字符及后面的字符,还可以用数字。

>>中文是合法的标识符,可以用作变量名(这种方式**不推荐**)


###常量 es6

常量就是在程序运行中,不会被改变的量

例:
const PI=3.14;


1,常量是块级作用域,作用域和let一样。
2,不能重新来赋值,也不能被重新定义,会直接报错!
3,在创建时候,常量需要被初始化,也就是赋值,否则会报错!
4,一个常量不能和它所在作用域内的其他变量或函数拥有相同的名称
5,值可以是任何类型,但无法重新赋值。对象属性不在保护范围内
6,没有强制规范命名,为了和变量区分,全部大写。
兼容性:ie 11 谷歌21

###类型之间的转换
####隐式转换

1,当不同数据类型进行相互运算的时候,
2,当对非布尔类型的数据求布尔值的时候

预期为数字的时候:
算术运算的时候,我们的结果 和 运算的数都是数字,数据会转换为数字进行计算(- * / %)

| 类型 | 转换前 | 转换后 |
| ------------- |:-------------:| -----:|
| number | 4 | 4 |
---------------------------------------
| | '1' | 1 |
| string | 'abc' | NaN |
| | '' | 0 |
---------------------------------------
| boolean | true | 1 |
| boolean | false | 0 |
---------------------------------------
| undefined | undefined | NaN |
| null | null | 0 |

预期为字符串的时候:

转为字符串 使用+号时候,会自动转换为字符串

预期为布尔的时候:

转换为布尔值,undefined null '' 0 NaN -->false 其余为 true

####强制类型转换
转换为数值Number(),parseInt(),parseFloat()转换函数

Number 在进行转换时候,遇到不能转换为数值的,就返回数值NaN;能返回浮点数 整体进行转换
parseInt()在进行转换时候,遇到不能转换为数值的,就返回能转换的正整数 单独转换
parseFloat() 能返回浮点数 单独转换 只能解析第一个小数点

前者把值转换成整数,后者把值转换成浮点数。
String类型调用这些方法,这两个函数才能正确运行;如果遇到非数字,返回NaN Not a Number

小技巧:
转换字符串 a=""+数据
转换boolean !!数据类型
转换数值 数据类型*或/1;容易误解

###JavaScript的运算符
- 算术运算
![](images/ys.png)
> - 加法运算符(Addition):x + y
> - 减法运算符(Subtraction): x y
> - 乘法运算符(Multiplication): x * y
> - 除法运算符(Division):x / y
>
> - 余数运算符(Remainder):x % y
> - 自增运算符(Increment):++x 或者 x++
> - 自减运算符(Decrement):--x 或者 x--
> - 求负运算符(Negate):-x


- 赋值运算

- 比较运算
字符编码:计算机里所有的数字,字母和其他符号都有编号。这有利于数据化传输 charCodeAt()
如果是是多个字符,会逐个比较。(字符的 Unicode 编码。这个返回值是 0 - 65535 之间的整数)


- 逻辑运算


逻辑非,可以用于任何值。首先会转换为值为布尔值,再取反(也叫取反运算符)
预期为布尔值:undefined null '' 0 NaN -->false 其余为 true

逻辑与,有两个以上操作数,判断里面两个是否都会返回true

逻辑或,两个以上操作数,判断里面两个是否有一个返回true

逻辑与,逻辑非 也称为短路运算符。
例:
var b_flag=true;
var b_flag2=b_flag&& a;
console.log(b_flag2);

var b_flag=false;
var b_flag2=b_flag&& a;
console.log(b_flag2);

- 条件运算

? :

###运算符的优先级
----
| 优先级 | 运算类型 | 运算符使用 |
19 圆括号 ()
18 new 成员访问 数组访问 . []
17 函数调用 fn
16 后置递增和递减 ++ --
15 逻辑非,前置递增递减 typeof ! ++ --
14 乘除取余 *\%
13 加减 + -
11 大于小于等于 <>=
10 等于全等于不等于不全等 == === != !==
6 逻辑与 &&
5 逻辑或 ||
4 三元运算 ?:
3 赋值 =

1,善于使用括号运算符
2,记住运算符的优先级

赋值运算很低,先计算右边表达式,再赋值给左边
###程序顺序执行结构
----

顺序结构的程序是严格按照程序中代码的先后执行的;如果有选择结构,就会根据具体条件
执行相应的代码。循环结构中也会有条件判断,会根据不同的情况执行不同的代码的。有的
还有交互技术,会根据使用者的要求或是外界的情况作出响应的。

原文地址:https://www.cnblogs.com/Edliu/p/7471851.html