第一阶段 初始javascript 第二周读书笔记(作用域)

操作符

只能操作一个值得操作符叫做一元操作符

递增和递减操作符  执行前置递增操作符时,变量的值都是在语句被求值以前改变的,后置递增和递减与前置递增和递减有个非常重要的区别,即递增和递减操作是包含他妈的语句被求值之后才执行的

一元加和减操作符 放在数值前面,对数值不会产生任何影响,一元减操作符主要用于表示负数。一元加和减操作符主要用于基本的算术运算。

布尔操作符  

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操作符确定检测

执行环境及作用域

执行环境定义了变量或函数有券访问的其他数据,决定了她们各自的行为。每个执行环境都有一个与之关联的变量对象,环境中定义的所有变量和函数都保存这个对象中。

每个函数都有自己的执行环境,当执行流进入一个函数时,函数的环境就会被推出一个环境栈中。而在行数执行之后,栈将掐黄精弹出,被控制权返回给之前的执行环境。

当代码在一个环境执行时,会创建变量对象的一个作用域链。作用域链的用途,是保证对执行环境有券访问的所有变量和函数的有序访问。

你可能感兴趣的:(第一阶段 初始javascript 第二周读书笔记(作用域))