JavaScript 让你意外的瞬间(变量Var)

emmm,于我而言呢,我是先学习C,然后C++,再到JAVA,到现在的JS,所以在学习JS的过程中,遇到了一些,很意外,很惊喜,很无奈的一些知识点。
在这里插入图片描述

所以自己想以这种方式复习一下JS,并且进行一个知识的汇总整理。

OK,现在开始,就从这一篇开始。
我们知道JS中的变量是松散类型的,所谓松散类型就是可以用来保存任何数据类型的数据。
换句话说:每个变量仅仅是一个用于保存值得占位符而已。

    <script>
        var a1;
        var a2=5;
        var a3=null;
        var a4=true;
        var a5="456";
        console.log(a1,a2,a3,a4,a5);
    </script>

就像这样,我们来看一下打印的效果:
undefined 5 null true "456"

这里要注意什么呢?在JS中,你定义没有赋值的话,会默认为undefined 。
(其实这五个就是JS的五个基本数据类型)
说实话我刚开始学的时候在这里很惊讶,这nm也太开放了。
在这里插入图片描述
然后来下一个点,我们在学习C或者JAVA中时,这样的代码:

int a=5;
a="String";

那是肯定不行的,但在JS可以,因为它懒散。。。。。

    <script>
        var x=10;
        x="哎?我变了...";
        console.log(x);
    </script>

它,没有任何问题。。。。。

还有一个更离谱的,我们知道啊,在使用变量的时候,我们要先声明定义才能用吧。
JS不这样认为。

    <script>
        message="没想到吧";
        console.log(message);
    </script>

这也没有任何问题,而且这个变量会被自动声明为全局变量。
在这里插入图片描述
OK,关于变量的最后一个点呢,我们来看一下代码:

    <script>
        for(var i=0;i<5;i++){
            console.log(i);
        }
        console.log(i);
    </script>

如果按我们学C++或者JAVA的思路,这个在for循环结束,输出的i应该会报错啊。
因为i是在for循环里面定义的啊。
JS不这样认为。。。。。。
给你们看一下打印结果:
0
1
2
3
4
5
最后打印的i是5,是5啊!
所以var出来的变量,for循环结束后,他还在,他还活着。

但是会有另一种情况:

    <script>
        function f1(){
            var a=5;
        }
        console.log(a);
    </script>

看这个,如果是在函数中定义了一个变量,那么就和JAVA中是一样的了。
最后会报错,因为a没有被定义。。
Uncaught ReferenceError: a is not defined
at 变量.html:38

OK,关于变量就先说这些,欢迎补充。。。。
在这里插入图片描述

©️2020 CSDN 皮肤主题: 精致技术 设计师:CSDN官方博客 返回首页