1.完成一个九九乘法表打印功能
<script type="text/javascript">
// 完成一个三角形打印功能
document.write('<pre>');
for(var i=1;i<=9;i++){
for(var j=1;j<=i;j++){
document.write(j+'*'+i+'='+j*i);
document.write(' ')
}
document.write('<br>');
}
document.write('</pre>');
</script>
2.预解析
预解析:在所有的代码中找变量的定义和函数的定义,找到了就将变量的定义代码和函数的定义代码
,提升放在所有代码的最前面,在执行的时候,按照解析后的代码进行执行.
作用域
概念:能起到作用的区域就叫做作用域。定义在不同区域的变量,他的作用域是不一样的
作用域分为全局作用域和局部作用域
全局变量 - 定义在函数外的变量 - 作用域是整个页面 |
局部变量 - 定义在函数内的变量 - 作用域是函数内部 |
局部可以访问到全局的变量, 全局访问不到局部的变量 |
作用域链:由作用域嵌套形成一条链式结构
规则1:当我们将一个变量当做是一个具体的数据使用的时候,先在当前作用域中找是否定义
过;没有定义过;就去上级作用域中去找.....直到全局,如果全局也没有定义过,报错
规则2:当我们给一个变量空间赋值的时候.先在当前作用域中找是否定义过这个变量,定义过,
赋值成功,修改的是当前作用域中的这个变量,没有定义过,就去上级作用域中找....直到全局,
全局找到了,就是在给全局变量赋值,如果全局也找不到,就会在全局定义这个变量并赋值.
结论:
全局中有预解析,局部中也有预解析,局部的预解析,只能在局部中进行,不会将变量提升到全局
使用连等的方式定义变量并赋值,只有第一个有定义过程,其余的都是直接赋值
函数定义好以后,函数名就跟变量名一样,可以使用函数名修改这个空间中的值
局部的预解析会在形参赋值之后,预解析中的函数会覆盖掉形参赋的值