函数声明:function fd (){} 函数表达式:var fe = function(){}
var p; var obj ={x:1,y:2} for(p in obj){} 1、顺序不确定 2、enumerable为false时不出现 3、for in对象属性时受原型链影响
//function
undefined
//对于函数有两种思路,首先是直接声明并配置好,就是我们一般的做法,但是也可以
undefined
var fe = fuction(){};
VM16933:1 Uncaught SyntaxError: Unexpected token '{'
var fe = function(){};
undefined
//但是这个时候就不能在它之前进行调用
undefined
//for
undefined
//for in语句
undefined
var p;
undefined
var obj = {x:1,y:2}
undefined
for(p in obj){
}
undefined
//上面的forin 语句可以调用一个obj里面的一些属性对象,但是问题就是顺序是不确定的,而且会受到原型链的影响,当enumerable为false时候不会出现
undefined
//with语句是一个用来限制作用域的语句,它的作用首先就是用with把语句限制在一定的范围里面,然后在这个范围里面有一个块函数可以进行操作
undefined
with({x:1}){
console.log(x);}
VM18409:2 1
undefined
//会发现上面其实就不再需要进行调用obj。x了
undefined
//但是上面的那个也很鸡肋,因为完全可以先把你的作用域定义给一个函数,然后再在这个函数下进行相关操作
undefined
JS的严格模式下,with语句已经不推荐使用,如图
with
用于设置代码在特定对象中的作用域
for...in
遍历对象属性
Function
左:函数声明
右:函数表达式
with 严格模式下被禁用
switch
for...in
function
with语句
for...in遍历对象中的属性
不建议使用with语句
for 。。。in语句
函数申明会预处理,函数表达式不会
with语句已经不推荐使用,如图
定义了变量p和对象obj,通过for...in来遍历对象obj
左边的叫函数声明,右边的叫函数表达式。函数声明会被预先处理或叫函数前置,所以在函数声明的代码前面去调用这个函数是可以的,并且能调用成功。但是函数表达式就不可以。除此以外还可以通过new function构造器的方式去创建函数对象
with修改当前作用域,可以直接输出1,而不用写对象.X
作用域,深层访问对象属性时,可以通过定义变量来实现
for in 用于遍历对象的属性,
函数声明会被预先处理,或者叫函数前置,可以声明前调用
函数表达式不可以
函数声明及函数表达式
var x=function(){};不会被预先处理 因此在x之前无法调用
for in 函数:遍历出的顺序不确定、当enumerable为false式不会出现并且其对象属性受原型链的影响
条件语句:switch
循环语句:while 、 do while 、 for
with语句修改当前作用域
with不建议使用的原因
for in 遍历注意点
for in 遍历注意点
左者是函数声明,右者是函数表达式。