操作符
只能操作一个值得操作符叫做一元操作符
递增和递减操作符 执行前置递增操作符时,变量的值都是在语句被求值以前改变的,后置递增和递减与前置递增和递减有个非常重要的区别,即递增和递减操作是包含他妈的语句被求值之后才执行的
一元加和减操作符 放在数值前面,对数值不会产生任何影响,一元减操作符主要用于表示负数。一元加和减操作符主要用于基本的算术运算。
布尔操作符
1)逻辑非:由一个叹号(!)表示,可以应用于ECMAScript中的任何值,无论值是什么最后都返回一个布尔值,逻辑非操作符首先会将他的操作数转换为一个布尔值,然后在对齐求反。
2)逻辑与:由两个和号(&&)表示,有两个操作数,应用于任何类型的操作数,而不仅仅是布尔值。逻辑与操作属于短路操作,即如果第一个操作数能够决定结果,那么久不会再对第二个操作数求值,对于逻辑与操作而言,如果第一个操作数是false,则无论第二个操作数是什么值,结构都不再可能是ture了。不能再逻辑与操作中使用未定义的值。
3)逻辑或:与逻辑与操作相似,如果有一个操作数不是布尔值,逻辑或也不一定返回布尔值。
乘性操作符
1)乘法:*号表示 如果有个一个操作值不是数值,则在后台用用Number()讲其转化为数值。在进行操作。
2)除法 用/ 斜杠表示
3)求模(余数) 用%表示
加性操作符
1)加法(+)
如果两个操作数都是字符串,则将第二个糙操作数与第一个操作数拼接起来,如果只有一个操作数是字符串,则将两一个操作数转化为字符串,将着两个字符串片接起来。
如果一个操作数是对象、数值或布尔值,则调用她们的toString()方法取得相应的字符串值。
2)减法(-)
如果有个操作符是对象,则调用对象的valueOf()方法以取得表示该对象的数值。
关系操作符
小于(<) 大于(>) 小于等于(<=) 大于等于(>=)都是对两个值进行比较,返回一个布尔值
在比较字符串时,实际比较的是两个字符串中对应位置的每个字符的字符编码值。经过这么一比较之后,在返回一个布尔值。
相等操作符
相等(== )和不相等(!=) 先转化在比较
全等(===)和不相等(!==) 劲比较而不转换
条件操作符
赋值操作符
用等于号(=)表示,作用就是把右边的值付给左边的变量
逗号操作符
使用逗号操作符可以在一条语句中执行多个操作
语句
语句通常使用一或多个关键字来完成给定的任务。
1)if语句
2)do-while语句 是一种后侧试循环语句,即只有在循环体中的代码执行之后,才会测试给出条件
3)while语句 属于前测试循环语句。
4)for语句 也是一种钱测试循环语句
5)for-in 语句 是一种精准的迭代语句,可以用来枚举对象的属性。
6)label 语句 可以在代码中添加标签,一遍将来使用
7)break 和 continue 语句 用于循环中精准的控制代码执行。
8)with 语句 将代码的作用域社会到一个特定的对象中
9)switch 语句 与if语句的关系最为密切 可以使用任何数据类型
函数
使用function关键字来声明,后跟一组参数以及函数体
function sayHi (name , message){
slert("Hello" + name + "," + message)
}
在函数体内可以通过arguments对象来访问这个参数数组,从而获取传递给函数的每一个参数。
特点:命名的参数只提供便利,但不是必须的。另外,在命名参数方面,其他语言可能需要事先创建一个函数签名,而将来的调用必须与该签名一致。
另个一个重要方面,就是arguments 对象可以与命名参数一起使用。
function doAdd (num1,num2){
if(arguments.legth == 1){
alert(num1 + 10);
}else if (arguments.length == 2){
alert (arguments[0] + num2);
}
}
关于参数:没有传地值得命名参与奖自动被赋予undefined
变量、作用域和内存问题
js变量松散型的本质,决定了它只是在特定时间用于保存特定值的一个名字而已。
ECMAScript 变量可能包含两种不同数据类型的值:基本类型值和引用类型值,基本类型值指的事简单的数据段, 而引用类型值指的是那些可能有多个值构成的对象。
1)动态的属性
定义基本类型值和应用类型值的方式是类似的,创建一个变量并为该变量赋值,但是,当这个值保存到变量中以后,对不同类型值可以执行的操作则大相径庭。对于引用类型的值,我们可以为其添加属性和方法,也可以改变和删除其属性和方法。
2)复制变量值
除了保存的方式不同之外,在丛一个变量像两一个变量复制基本类型值和引用类型值时,也存在不同。如果从一个变量像另一个变量复制基本类型的值,会在变量对象上创建一个新值,然后把该值复制到为新变量分配的位置上。
3)传递参数
ECMAScript 中左右函数的参数都是按值传递的。
4)检测类型 使用typeof操作符确定检测
执行环境及作用域
执行环境定义了变量或函数有券访问的其他数据,决定了她们各自的行为。每个执行环境都有一个与之关联的变量对象,环境中定义的所有变量和函数都保存这个对象中。
每个函数都有自己的执行环境,当执行流进入一个函数时,函数的环境就会被推出一个环境栈中。而在行数执行之后,栈将掐黄精弹出,被控制权返回给之前的执行环境。
当代码在一个环境执行时,会创建变量对象的一个作用域链。作用域链的用途,是保证对执行环境有券访问的所有变量和函数的有序访问。