js变量陷阱

js声明变量 var 是局部变量 没有var 是全局  但是有陷阱 上代码

var a = 1;//居然是全局变量
        b= 2;//全局变量

        function c()
        {
            console.log(a);//1
            console.log(b);//2;
            var b = 1111;//局部变量
            console.log(b);//1111
            var d = 3;//局部变量
            e = 4;//全局变量
            var f = {
                ff:{
                    d:a
                }
            };
            console.log(f.ff.d);//1

        }

        function g()
        {
            console.log(e);//4
            console.log(d);//报错

        }
        c();
        g();/**

1
2
1
4
Uncaught ReferenceError: d is not defined

**/
时间: 2024-08-17 10:09:24

js变量陷阱的相关文章

js 变量提升+方法提升

<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> var a = 100; function t() { alert(a); var a = 10; } t(); //输出结果为undefine

js变量作用域

? 1 2 3 4 5 6 7 8 9 10 for(var i =0;i<100;i++)   {        } alert(i);//100 if(true){     var i="91d";   } alert(i);//91d ? 1 2 3 4 5 6 function add(ad1,ad2){   sum=ad1+ad2;   return sum;//如果没有用var声明局部变量,会提升为全局的变量 } alert(add(3,5)); alert(&quo

js变量详解

1.变量的声明 1)js变量有局部变量和全局变量之分,无论是局部变量还是全局变量最好都使用var声明 2)如果没有使用var声明一个变量,js会隐式声明该变量,且该变量为全局变量 3)可以使用var多次声明一个变量 4)尝试读取一个未声明的变量,js会报错 5)尝试读取一个未初始化的变量,js将得到一个默认值undefined 举例: var i = 12; var i = 34; //不会报错,只是对i进行重新赋值 alert(i); //得到34 j = 56; //隐式声明一个全局变量 a

JS 变量详解

关于JS中的变量 JS中的变量是松散类型的,可以存储任何类型的数据. JS变量松散类型的本质,决定了变量只是在特定时间用于保存特定值的一个名字而已. 由于不存在定义某个变量必须要保存何种数据类型的值的规则,变量的值及其数据类型可以在脚本的生命周期内改变. 用var关键字声明的变量,未经初始化时,保存的是一个特殊的值——undefined. 变量初始化仅仅是给变量赋一个值. 可以在一条语句中声明多个变量,初始化或不初始化皆可,变量之间用逗号隔开. 用var关键字声明的变量是定义该变量的作用域中的局

js变量以及其作用域详解

一.变量的类型  Javascript和Java.C这些语言不同,它是一种无类型.弱检测的语言.它对变量的定义并不需要声明变量类型,我们只要通过赋值的形式,可以将各种类型的数据赋值给同一个变量.例如: i=100;//Number类型 i="variable";//String类型 i={x:4};//Object类型 i=[1,2,3];//Array类型 JS的这种特性虽然让我们的编码更加灵活,但也带来了一个弊端,不利于Debug,编译器的弱检测让我们维护冗长的代码时相当痛苦. 二

jsp中把js变量赋给java变量,或者将java变量赋给js变量怎么做?

在jsp中经常会遇到把js变量赋给java变量,或者将java变量赋给js变量的情况,在此将通用的处理方法小结如下: java变量传给js好办,var a=”<%=javaParam%>“;注意要将引号”"加上: js变量给java稍微复杂点,一般是在表单中用一个的隐藏表单元素,然后在脚本中将js变量值赋给它: var jsParamValue=’aaaa’;form1.jsParam.value=jsParamValue; 然后就可以request.getPrameter(“jsP

详解js变量、作用域及内存

详解js变量.作用域及内存 来源:伯乐在线 作者:trigkit4 原文出处: trigkit4 基本类型值有:undefined,NUll,Boolean,Number和String,这些类型分别在内存中占有固定的大小空间,他们的值保存在栈空间,我们通过按值来访问的. JavaScript 1 2 (1)值类型:数值.布尔值.null.undefined. (2)引用类型:对象.数组.函数. 如果赋值的是引用类型的值,则必须在堆内存中为这个值分配空间.由于这种值的大小不固定(对象有很多属性和方

JavaScript学习笔记——js变量的布尔值

typeof(1): numbertypeof(NaN): numbertypeof(Number.MIN_VALUE): numbertypeof(Infinity): numbertypeof("123"): stringtypeof(true): booleantypeof(window): objecttypeof(Array()): objecttypeof(function(){}): functiontypeof(document): objecttypeof(null)

【repost】 JS变量重复声明以及忽略var 声明的问题及其背后的原理

JS的容错率很高,一些其他语言常见的小错误JS都能大度得包容,比如给一个方法传入超出预计的参数.在声明变量之前使用该变量(变量的声明提升解决了这个问题)等等,这里我们就要解剖一下JS变量重复声明以及当我们忽略var使用 a=2来声明变量时a为全局变量的问题: [javascript] view plain copy //第一段代码 var a = 2; var a = 3; alert(a);//3 //第二段代码 <span style="font-size:18px;">