JS学习专辑(4) 变量作用域和语句

因为前面学了JS在客户端主要是WEB中的一些东西,但是我觉得想继续学的话,基础还是很重要的。因此还是先回过头来把JS核心语言的基础打好,再继续去学习JS在客户端中的一些应用。

因为是只学习JS语言的东西,所以装个Node可以帮助学习,安装方法的话可以看这里

一点点来弄吧,首先最简单的那些值、类型、变量什么的我觉得都是差不多的东西,但是变量的作用域方面还是有必要记录一下,稍微还是有点区别的。

在函数体内,局部变量优先级高于同名的全局变量。

View Code
var x="jk";
function f(){
    var x="dd";
    return x;
}
console.log(f()); //输出为"dd"

在JS中,变量在声明它们的函数体以及这个函数体嵌套的任意函数体内都是有定义的。

View Code
var x="jk";
function f(){
    console.log(x); 
    var x="dd";
    console.log(x);
    return x;
}
console.log(f());

上面的例子中,可能会误以为第一个输出的是jk,但是不是这样的,根据上面特性,意味着在声明变量以前就可以使用,也就是说函数体内的局部变量遮盖了全局的同名变量,只有在执行到var的时候才被赋值。上面的函数等价于这样:

View Code
var x="jk";
function f(){
    var x;
    console.log(x);  //undefined
    x="dd";            
    console.log(x);     //dd
    return x;
}
console.log(f());    //dd

然后,关于各种语句来说的话,声明语句都是用var的,函数都是用function()的。条件、循环语句都是差不多的东西,语句中是可以贴标签的:identifier:statement定义完后就可以在程序任何一个地方通过标签名字引用它。其他类型的语句的话,比如with(object)statement;通常用来缩短特定情形下必须写的代码量:

View Code
var a=screen.availHeight;
var b=screen.availWidth;
var c=screen.bufferDepth;

with(screen){
    var a=availHeight;
    var b=availWidth;
    var c=bufferDepth;
}

上面就简化多次编写同一个对象的工作。不过由于这个东西难于优化,所以不推荐使用。

上面的一些基础的东西就记录了一点值得注意的地方,接下来等下章开始就要详细的学习记录了。

原文地址:https://www.cnblogs.com/socialdk/p/3033320.html