课程名称:JavaScript深入浅出
课程章节: 语句
课程讲师:Bosn
课程内容:
什么是语句:
JavaScript
程序由语句组成,语句遵守特定的语法规则。例如:if
语句,while
语句,with
语句等。
块语句(block):
块语句常用于组合0~多个语句。块语句用一对花括号定义。一般结合if
语句或者循环使用。我们想要让浏览器将块语句理解为对象字面量表达式的话,可以把块语句赋值给一个变量。我们需要注意的是没有块级的作用域,意思是如果我们定义了一个for(var i = 0; i < 5; i++)循环里面定义了i
,这个i
在外部是可以被访问到的。当我们在函数中定义一个变量,在外部是访问不到的,因为有函数作用域。
var
声明:
当我们定义一个变量可以使用var a = 1
,当我们如果这样定义一个变量var a = b = 1
,如果将这个定义放到函数中,那么这个b
就是一个全局作用域,在外部是可以访问到的,而a
在外部是访问不到的。
try catch
的使用:
如果try
语句中抛出异常,会有catch
进行捕获并执行。如果try
语句中没有异常,那么就会忽略catch
语句中的内容。但是最后都会执行finally
语句。我们可以使用try finally
,也可以只使用try catch
或者try catch finally
一起使用。
function
语句的使用:
function
语句用来定义函数对象一般也叫作函数声明。我们还可以定义函数表达式。函数声明和函数表达式有一些区别,其中函数声明会被提前来调用,函数表达式不会被提前。还可以通过new
构造器的方式去创建函数对象。
for...in
的使用:
我们定义了一个变量p
,定义了一个变量obj
,我们可以使用for (p in obj) {}
去遍历obj
,我们需要注意的是for in
的顺序是不确定的,具体的顺序依赖于眼前的事件,我们想要去遍历数组或者对象不要使用for in
去遍历。对象的每个属性是有属性描述器的,enumerable
为false
时不会在for in
中出现。for in
对象属性时受原型链的影响。
switch
的使用:
当我们定义一个变量为2,那么就会在switch
中去匹配变量的值,下面的例子输出的结果为2。如果下面语句中我们没有书写break
,那么语句就会继续往下执行,这时候0也会被输出。我们还可以几个case
内容为空,这样如果匹配到其中一个情况都会输出最后的结果。
with
语句的使用:
with
语句可以修改当前语句的作用域,我们在里面调用时,不会指定对象,可以直接输出对应的属性值。with
语句的一些缺点,一是会让JS
引擎优化更难,二是可读性差,三是可被变量定义代替,四是严格模式下被禁用。
课程收获:
这一章主要学习了常见一些语句的使用,其中我们需要注意的是for in
语句,循环输出时不一定按顺序的,对象属性中enumerable
为false
也不会出现以及还会受到对象属性的原型链影响。第二点我们在使用switch
语句判断时,在每个case
后面的语句都要写break
,不然会把后面的值也输出。第三点我们使用with
语句时,虽然可以修改当前语句的作用域从而直接输出对象的属性值,但是可读性差,容易被替代以及优化难,所以我们尽量避免使用with
语句。