05JS高级 方法没有块级作用域

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
    <script type="text/javascript">
        //1.js 顶级作用域 是window
        var num = 1;
        alert(window.num);
        //2 方法作用域
        function test() {
            number2 = 2;//方法内部声明局部变量的时候,需要加var 否则就是全局变量
            var num3 = 3;//局部变量在方法外部无法访问

            //3 没有块级作用域
            for (var i = 0; i < 10; i++)
            {
                var num4 = 4;
            }
            alert(num4); //因为没有块级作用域,所以此处的变量num4就是方法的一个局部变量
        }
        test();
        alert(window.number2);
    </script>
</head>
<body>
</body>
</html>

05JS高级 方法没有块级作用域

时间: 2024-10-06 16:20:19

05JS高级 方法没有块级作用域的相关文章

ES6入门一:块级作用域(let&amp;const)、spread展开、rest收集

let声明 const声明 块级作用域 spread/rest 一.let声明与块作用域 在ES6之前,JavaScript中的作用域基本单元就是function.现在有了let就可以创建任意块的声明,也被称为作用域块.这意味者只需要“{}”就可以创建一个作用域.不再像var声明变量那样总归属于包含函数或全局.例如: 1 var a = 2; 2 { 3 let a = 3 4 console.log(a); //3 5 } 6 console.log(a); //2 在相关的资料中看到有介绍,

函数调用的几种方法 几种主流框架使用匿名函数模仿块级作用域的方式

函数调用的几种方法 js 里函数调用有4种模式:方法调用.正常函数调用.构造器函数调用.apply/call 调用.同时,无论哪种函数调用除了你声明时定义的形参外,还会自动添加2个形参,分别是 this 和 arguments.这里你既然问 this,那么就只谈 this.this 的值,在上面4中调用模式下,分别会绑定不同的值.分别来说一说:方法调用:这个很好理解,函数是一个对象的属性,比如 var a = { v : 0, f : function(xx) { this.v = xx; }

JavaScript的作用;JS常见的三种对话框;==和===的区别;函数内部参数数组arguments在函数内部打印实参;JS的误区:没有块级作用域

JS:客户端(浏览器)脚本语言 弱类型 基于原型 事件驱动 不需要编译(直接运行) JS的作用:表单验证,减轻服务端的压力 添加页面动画效果  动态更改页面内容  Ajax网络请求 (一)常见的对话框 alert()对话框:该方法是window对象的方法,在浏览器中弹出一个对话框(该方法没有返回值)  prompt()对话框:2个参数,一个是浏览器提示信息,第二个是默认的输入框的值,返回值就是输入框的信息  confirm()对话框:在浏览器弹出一个对话框,用户只能选择正确或者取消,返回值对应为

js没有块级作用域

今天看一篇介绍ECMAscript6的博文时,看到let命令的时候突然有点蒙逼....... let命令:let用于变量声明,与var用法类似,但是let是一个局部变量,只在声明的代码块中有效. { let a = 10; var b = 20; } a // not defined b // 20 看到这我觉得这个块级作用域是函数作用域,但是块级作用域和函数作用域是不一样的,比如: function demo(){ var a=1; } console.log(a); a//not defin

js模仿块级作用域

var i = 5; var i; alert(i); 当一个变量被声明赋值之后,如果再对其声明,则不会改变上一次赋值后的值,所以i的值还是5,只有重新赋值之后,才会改变,如: var i = 5; var i = 6; alert(i); i现在的值是6: JS中没有块级作用域,如果想要块级作用域的效果,可以进行模仿,如: (function () { for (var i = 0; i < 5; i++) { } })(); alert(i); //出错 这方法可以理解为把块级作用域放在一个

JS函数表达式 -- 模仿块级作用域

JavaScript没有块级作用域的概念.这意味着在语句中定义的变量,实际上是在包含函数中而非语句中创建的. 1 function outputNumbers(count){ 2 for(var i=0; i<count; i++){ 3 alert("In: " + i); 4 } 5 var i; 6 alert("Out: " + i); 7 } 8 outputNumbers(2); //In: 0 In: 1 Out:2 在这个函数中定义了一个for

javascirpt怎样模仿块级作用域(js高程笔记)

因为javascript没有块级作用域的概念,所以在块语句中定义的变量,实际上是在包括函数中而非语句中创建的. 如: function outputNumbers(count){ for(var i=0; i< count; i++){ alert(i); } alert(i); } 这个函数中定义了一个for循环,而变量 i 的初始值被设置为0.在Java.C++等语言中,变量i仅仅会在for循环的语句块中有定义,循环一旦结束,变量i就会被销毁.但是Javascript中,变量i是定义在out

javascirpt如何模仿块级作用域(js高程笔记)

由于javascript没有块级作用域的概念,所以在块语句中定义的变量,实际上是在包含函数中而非语句中创建的. 如: function outputNumbers(count){ for(var i=0; i< count; i++){ alert(i); } alert(i); } 这个函数中定义了一个for循环,而变量 i 的初始值被设置为0.在Java.C++等语言中,变量i只会在for循环的语句块中有定义,循环一旦结束,变量i就会被销毁.可是Javascript中,变量i是定义在outp

ES6标准入门 第二章:块级作用域 以及 let和const命令

一.块级作用域 1.为什么需要块级作用域? ES5中只有全局作用域和函数作用域,带来很多不合理的场景. (1)内层变量可能会覆盖外层变量: var tem = new Date(); function f(){ console.log(tmp); if(false) { var tmp = "hello world"; } } f(); //undefined 变量提升导致了外层的内层的tmp变量覆盖了外层的tmp变量. (2)用来计数的循环变量泄露为全局变量: var s = &qu