一、语法
1、js是区分大小写的test
和Test
是不一样的(重要)。
2、标识符是指变量、函数名、参数名、属性名,命名规则是第一个字符必须是字母
以及_
和$
开头,其他字符可以是字母
、_
、$
、数字
。
3、语言中的注释是:
//单行注释
/*
这是块级注释
*/
4、语言标准和严格模式,严格模式开启:
function test(){
'use strict'
//严格模式开启会处理ECMAscript中不确定的行为,而且对某些不安全的操作抛出错位。
}
5、语句结束要加;
,当然不加也是可以的,但是在代码压缩的解析上会带来不必要的错误(强烈推荐加上)
二、关键字和保留字
关键字:按照规则,关键字也是语言保留的,不能用作标识符。
break | do | instanceof | this | function |
---|---|---|---|---|
typeof | case | else | while | try |
new | var | catch | in | delete |
finally | return | void | throw | if |
continue | for | switch | default | with |
debugger* |
保留字
abstract | enum | int | short | static |
---|---|---|---|---|
boolean | export | interface | import | public |
byte | extends | long | super | double |
char | final | native | synchronized | implements |
class | float | package | throws | volatile |
const | goto | private | transient | protected |
debugger |
第5 版把在非严格模式下运行时的保留字缩减为下列这些:
class | enum | extends | super | const |
---|---|---|---|---|
export | import |
在严格模式下,第5 版还对以下保留字施加了限制:
implements | package | public | interface | private |
---|---|---|---|---|
static | let | protected | yield |
注意, let 和yield 是第5 版新增的保留字;其他保留字都是第3 版定义的。为了最大程度地保证兼容性,建议大家将第3 版定义的保留字外加let 和yield 作为编程时的参考。
在ECMAScript3版本代码中使用关键字作标识符,会导致"Identifier Expected" 错误。而使用保留字作标识符可能会也可能不会导致相同的错误,具体取决于特定的引擎。一般来说,最好都不要使用关键字和保留字作为标识符和属性名,以便与将来的ECMAScript 版本兼容。
三、变量
var messages;//声明变量var是关键字,messages是标识符。
var messages='hi!';//变量messages保存的变量值`hi!`
messages=520;//没问题,但是不推荐使用。
function test(){
var messages01=1000;//函数里面命名的是局部变量。
messages02=2000;//相当于全局变量,因为没有用vae关键字。(但是不要这样,严格模式会报错)
};
test();
alert(messages01);//错误,访问不到局部变量。
alert(messages);//2000没问题
var a,b,c,d;//可以一次声明多个变量以逗号分割分号结尾。
在严格模式下,不能定义eval和arguments的变量,就是标识符会导致语法错误。
四、数据类型
1. typeof:用于检测数据类型
2. Undefined:只有一个值undefined,声明一个变量但没有赋值就会自动取值为undefined。
3. Null:只有一个值null,null表示空对象指针,用typeof检测时返回'object'.null==nudefined //true.
4. Boolean:有两个值true和false,Boolean(message)可以转化任意值。
5. Number:是数字类型,'e7'10的7次方,'e-7'负10的7次方。0.1+0.2!=0.3而是0.30000000000000004,
js最小值Number.MIN_VALUE==5e-324,最大值Numer.NAX_VALUE==1.7976931348623157e+308。
NaN非数值是特殊数值,本来要返回数值的时候未返回数值的情况,NaN自身都不等于自身。
Number()转换任意值,parseInt()转化成整数第二个参数可以是几进制, parseFlont()也是转换成数值只是带有小数如果有多个点只取第一个。
String:是字符串" "和''中的字符就是字符串,和字符串相加会被隐式转换,toString()可以把别的类型转化为字符串。
Object:代表对象,其实就是数据和功能的集合。创建对象var obj = new Object()。
五、操作符
1、一样操作符:--
、++
递减和递增,--2
前置优先级高,2--
后置优先级降低。一元'+',在非数字类型前会隐式转换成数值。一元'-'会把数值变成负数,非数值和一元加一样。
2、位操作:暂略过。
3、布尔操作符:!
非、&&
与两个都是真、||
或有一个为真。
4、乘性操作符:*
乘、/
除、%
余(求模)。
5、加性操作符:+
加、-
减。
6、关系操作符:<=
、>=
、<
、>
.
7、相等操作符:==
相等操作符会隐式转换类型进行比对、===
全等于不会转换类型比对,比较严谨。
8、条件操作符:var value = trueAndFalse ? true : false;
9、赋值操作符:=
、*=
、/=
、%=
、+=
、-=
、<<=
、>>=
、>>>=
、简化用的,并不能提升性能。
10、逗号操作符:可以在一行执行多个操作,var a,b,c,d;还可以赋值var a=(1,2,3,4)//a是4。
六、语句
//if语句
if(true){true执行此处代码块}else{false执行此处代码}
if(true){true执行此处代码块}else if(true){false执行此处代码}.多个..else{false执行此处代码}
//do...while语句
do...while语句是后测试语句,do...while中的代码至少执行一次。
do{true执行的代码}while(条件为true)
while语句
while是前测试语句,只有在达到条件就是为true才会执行。
while(false and true){是true则执行此处代码}。
for语句
for循环,也是个前测试语句
for(声明变量;运算条件;变量变化){循环代码}
for....in...语句
for...in...语句是一个精准的迭代语句,可以用来枚举对象属性
for(property in expression){执行的代码}
label语句
将要返回的标签。多和break和continue一起使用,多用于嵌套循环,跳到标签指定位置。
标签名:for(;;){break 标签名}
break和continue
break是直接跳出当前循环,continue也是跳出循环但是会从循环顶端再次执行。
with语句
将代码作用于一个对象的作用域中,少使用会降低性能
with(对象){该对象的私有作用域}
switch语句
流程控制语句和if很想
switch(将要判断的对象){
case (判断)://如果是将执行以下代码
代码;
break;//执行完跳出
case (判断2)://如果是将执行以下代码
代码;
break;//执行完跳出
default://如果都不是将执行以下代码
代码;
}
七函数
函数是每一个语言的核心概念,通过封装多条语句,可以在调用。ECMAScript通过function关键字来声明,后面跟一组参数和函数体。
1、参数
函数的参数没有限制可以任意传,也可以是任意类型,函数的参数是有arguments对象来管理的。arguments对象和数组类似但不是数组,可以通过[]来访问,使用length可以查看arguments的长度。严格模式对arguments做了限制,重写arguments的值会报错。
2.没有重载
JavaScript没有重载,通过传入不同的参数和类型可以模拟重载,两个相同的名的函数,后面会吧前面覆盖。
小结
本章主要介绍了,JavaScript的语法和数据类型(六个)五个基本类型一个引用类型,各个操作符,还有流程控制语句,以及函数的简单理解。
(暂停)