学习JS基础小结

定义

JS(javascript):是一种编程语言,它可以操控网页的行为。

引入方法

JS的三种引入方法:
(1)把JS写在HTML文件中,写在script标签中,即内部写法。

<script>
alert("这是内部引入");
console.log("hello");
</script>

(2)把JS写在JS文件中,然后在HTML文件中通过script标签引入,写项目时则把JS放在单独的文件夹,即外部写法。

<script type="text/javascript" src="./my.js"></script>

(3)把JS代码写在开始标签中,当成开始标签的属性,即行内写法。

<body>
<input type="button" onclick="alert('hello')" value="button" name="button">
</body>

基本语法

(1)JS中区分大小写。
(2)忽略空白符,即不起作用;如空格,换行,tab键。
(3)语句后面可以不加逗号。
(4)标识符和关键字。
(5)注释。

<script>
var a;
//var b;   这是单行注释
</script>
<script>
/*
var a;
var b;
console.log(a);
*/这是多行注释
</script>

变量和函数的提升

在代码进行预编译的时期,会对变量和函数进行提升,且函数是整体得到提升。

<script>
console.log(a);
// 输出结果为undefined,就是因为在预编译的阶段对a进行了声明,所以没有报错。
var a=1;
</script>
<script>
{// 说明函数在预编译的阶段,整体得到提升,赋值也会得到提升;但全局变量不会,只有声明得到提升。
        f(); 
        //  输出undefined,10
        function f(){
            console.log(a)
            var a=10;
            console.log(a);
        }
        f();  
        // 输出undefined,10
    }
</script>

作用域

JS中有两种作用域:全局作用域和局部作用于。
全局作用域:整个代码所有的地方都可以调用。
局部作用域:在函数内部声明的变量,只能在函数内部使用。

<script>
var a=1;
// 全局变量
var b=1;
function f(){
    console.log(a,b)
    // 虽然在函数内,但b前没有加var,所以属于全局变量,且不会提升,所以这里的b输出的是1。
    var a=2;
    // 局部变量,只能在函数内使用
        b=2;
    console.log(a,b);
}
f();
console.log(a,b)
// 输出的结果为undefined 1
//            2  2
//            1  2
</script>

数据类型

基础的数据类型:
数值型number:1、对应的值有很多
2、不分整数和小数
3、有最大值和最小值
4、可以通过不同的进制显示
5、不能对小数进行运算
字符串string:要用’'或"" 把字符串包起来,且不分字符和字符串。
布尔boolean
未定义型underfiend
空值null

引用数据类型:object、array、function。

数局类型的转换

数据类型的转换有两种:(1)隐式类型转换:在代码的运行过程中,自动的转换类型。例:

<script>
var re="abc"+123;
  console.log(re);
//   -------abc123
 console.log(typeof re);
//    -----输出string 
</script>

(2)强制转换类型:需要写代码强制转化。例:

<script>
 console.log(parseInt(3.14));
//  -----输出3
 console.log(Number("123"));
//  ----输出123
 console.log(Number("123abc"));
//  ---输出NaN
</script>

初步了解EC(G)、VO、GO

EC(G):全局执行上下文,存储全局的加var、加function的数据,放在vo区域中。
VO:位于EC(G)中,存储局部的加var、加function的数据。
GO:全局的数据,无论是加var还是不加var,或是function的数据;在默认情况下,GO中也存储了许多默认对象。
例题一:

<script>
 var i=0;
    function A() {
        var i=10;
        function x() {
            console.log(i);
        }
        return x;
    }
    var y = A();
    y();
    function B() {
        var i=20;
        y();
    }
    B()
    // 输出结果为10  10
</script>

例题二:

<script>
 let a = 0, b = 0;
    function A(a) {
        B = function (b) {
            alert(a+b++)
        }
        alert(a++)
    }
    A(1)
    B(2)
    // 输出结果为 1  4
</script>

例题三:

<script>

    var a=10, b = 11, c = 12;
    function f(a) {
        a = 1;
        var b = 2;
        c = 3;
    }
    f(10);
    console.log(a);   
    console.log(b);  
    console.log(c); 
    // 输出结果为 10  11 3
</script>

这一类型,一定要分清全局变量和局部变量,加var的要提升,函数要整体提升,没加war的需要去全局里找;如果都没找到就是没有定义,就会报错。
有的会形成闭包,在闭包中的数据,在外部不能被调用,也不会被销毁。闭包是指有权访问另一个函数作用域变量的函数,创建闭包的通常方式,是在一个函数内部创建另一个函数。对于闭包的实际应用,我虽然理解,但是无法把这个抽象的问题解释清楚,网上有很多文章,但对闭包的理解各有不同,所以对于闭包,还是要有自己的理解,这样在遇到有闭包的时候,才不会迷。

猜你喜欢

转载自blog.csdn.net/only_zing/article/details/107418063
今日推荐