当前位置:首页 > 技术分享 > 正文内容

JavaScript基础04

冰凉2022-09-30 19:47技术分享0

变量的作用域

function yc(){
            var x = 1;
            x = x+2;
            console.log(x)
        }
        //变量一定要写在作用域里面否则报错。
    </script>

如果两个函数使用了相同的变量名,只要在函数方法的内部,就不会冲突

function yc(){
            var x = 1;
            x = x+2;
            console.log(x)
        }
        yc();
        //变量一定要写在作用域里面否则报错。
        function yc1(){
            var x = 1;
            x = x+2;
            console.log(x)
        }
        yc1();
function yc1(){
            var x = 1;
            x = x+2;
            console.log(x)
        }
        yc1();

       function yc2(){

        var x = 1;

        function yc3(){

            var y = x + 1;

            console.log(y)
        }
        yc3();

假设 内部的函数变量和外部函数的变量重名

function yc4(){
        var x = 1;
        function yc5(){
            var x = "A"
            console.log(x,"内部的")
        }
        yc5();
        console.log(x,"外部的")
       }
       yc4();

假设在js中函数查找变量回从内而外进行查找,如果外部存在同名的函数变量,那么内部的函数就会屏蔽外部的函数变量,使用本身。

提升作用域

function yc6(){
                var y;
                var x = 'x'+y;
                consloe.log(x)
                //如果没有定义y的话就会提示,y is not defind
                var y ='y'
                //如果定义了机会提示 undefind
            }
            yc6();

结果underfind

js引擎自动提升了y的声明 但是不会提升y的赋值

function yc6(){
            var y;
            var x = 'x'+y;
            consloe.log(x)
            //如果没有定义y的话就会提示,y is not defind
            var y ='y'
            //如果定义了机会提示 undefind
        }
        yc6();

建议一定要把所有要是能用到的变量,全部放到函数的头部。

 //把要用到的函数都放到开头
        function yc7(){
            var y = "y";
            var x = "x" + y;
            console.log(x)
            var z,i,o;//undefined
        }
        yc7();

全局作用域

var x = "colddd"
alert(x)
//window
window.alert(x)

var old_alert = window.alert;
window.alert = function (){

};
//失效了
window.alert("123123123")
window.alert=old_alert;
//恢复
window.alert("121332425")

js只会有一个全局作用域 ,任何变量 函数,都可以视为变量

如果这个函数作用域找不到,全局也找不到 就会报 is not a function

由于我们所有的全局变量都会绑定到window上,如果不同的js文件使用了相同的全局变量就会冲突

全局变量

//唯一的全局变量
var cold = {};
//定义全局变量
cold.name = "冰凉";
cold.add = function(x,y){
return x + y;
}

局部作用域

function aaa(){
for(var i=0;i<100;i++){
console.log(i);
}
console.log(i+1)//为啥i除了作用域还是可以用?
}

ES6 let关键字 解决了局部作用域的冲突问题

function aaa(){
    for(let i=0;i<100;i++){
        console.log(i);
    }
    console.log(i+1)//i is not defined
}

推荐使用let去定义局部作用域的变量。

const PI = '3.1415'
console.log(PI)
PI='19'//Assignment to constant variable.

const里面的值 是只读属性,不可以修改。


版权声明:本文由AZPL工作室发布,如需转载请注明出处。

笔记本交流群:1025638188

本文链接:https://www.azplstudio.top/post/54.html

分享给朋友:
返回列表

上一篇:源码提供

下一篇:JavaScript 05

“JavaScript基础04” 的相关文章

JavaScript 01

JavaScript 01

引入方式标签引入<script>     alert("AZPL!!!")  </script>外联方...

50天50个案例02

50天50个案例02

<!DOCTYPE html> <html lang="en"> <head>    &...

JavaScript 基础02

JavaScript 基础02

字符串1.正常的字符串我们用单引号双引号进行包裹    let i = "cold";  &nbs...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。