博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS中不存在块级作用域
阅读量:6478 次
发布时间:2019-06-23

本文共 1019 字,大约阅读时间需要 3 分钟。

与C C++ JAVA不同,Javascript中没有块级作用域,函数中声明的所有变量,无论是在哪里声明的,在整个函数中它们都是有定义的。如以下例子中,i,j,k的作用域是相同的,它们三个在整个函数体中都有定义:

function test(o){        var i = 0;            //i在整个函数体内都有定义        if(typeof o == 'object'){            var j = 0;      //j也是,不仅在括号内            for(var k = 0;k < 10;k++){  //k也是,不仅在循环内部                document.write(k);            }            document.write(k);        //k 仍有定义  输出10        }        document.write(j);           // j也有定义    }

注意 “有定义”和”初始化“的区别:

var a = 'global';    function demo(){        console.log(a); // undefined 而不是global        var a = 'local';  //变量在此初始化,但到处都有定义        console.log(a);  //local    }    demo();

以上函数和下面等价:

var a = 'global';    function demo(){        var a;       //局部变量在函数开头声明        console.log(a);  //此处该变量有定义,但未初始化(赋值),仍为undefined        a = 'local';  //初始化赋值        console.log(a); //local    }    demo();

这就是javascript提前声明的特性。虽然局部变量在整个函数体内都是有定义的,但是在执行var之前,它是不会初始化的。

 

这个例子说明了为什么将所有的变量声明集中起来放置在函数的开头是一个好的编程习惯。

转载于:https://www.cnblogs.com/chenqiushi/p/4370356.html

你可能感兴趣的文章
memcache数据库和redis数据库的区别(理论)
查看>>
第三十九天
查看>>
Redis详解
查看>>
论程序员加班的害处
查看>>
基于HTML5的WebGL设计汉诺塔3D游戏
查看>>
WPF资料链接
查看>>
再次更新
查看>>
利用Windows自带的Certutil查看文件MD5
查看>>
开篇,博客的申请理由
查看>>
[JSOI2008]星球大战starwar BZOJ1015
查看>>
centos 7 部署LDAP服务
查看>>
iOS项目分层
查看>>
IntelliJ IDEA 注册码
查看>>
String字符串的截取
查看>>
Shell编程-环境变量配置文件
查看>>
Struts2和Spring MVC的区别
查看>>
理解Javascript参数中的arguments对象
查看>>
git代码冲突
查看>>
git bash 风格调整
查看>>
linux操作系统加固软件,系统安全:教你Linux操作系统的安全加固
查看>>