js变量的作用域问题

1 var tt = ‘www.cqcqing.com‘;
2 function test(){console.log(tt);} test();

控制台显示为:www.cqcqing.com

1 var tt = ‘www.cqcqing.com‘;
2     function test(){
3        console.log(tt);
4        var tt = ‘www.cqcqing.com‘;
5        console.log(tt);
6     }
7     test();

控制台显示为:undefined      www.cqcqing.com

原理:js在访问一个变量时会优先在该作用域(访问时的那个作用域)内寻找是否声明过该变量,如果该变量已经存在,则直接使用它的值,否则它会寻找该作用域的‘父作用域/上级作用域’,以此类推,直到找到全局作用域为止。

时间: 2024-11-03 03:26:31

js变量的作用域问题的相关文章

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

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

js变量及其作用域(附例子及讲解)

Javascript和Java.C这些语言不同,它是一种无类型.弱检测的语言.它对变量的定义并不需要声明变量类型,我们只要通过赋值的形式,可以将各种类型的数据赋值给同一个变量 工具/原料 Chrome 浏览器(以下代码测试均由Chrome调试) 方法/步骤 js变量的类型及申明方式等等,本文不再说明,读者可以参考相关官方文档 这里主要介绍js变量及其作用域 js变量作用域可分为:"全局变量"和"局部变量" "全局变量":申明在函数之外的变量 &q

js变量及其作用域

Javascript和Java.C这些语言不同,它是一种无类型.弱检测的语言.它对变量的定义并不需要声明变量类型,我们只要通过赋值的形式,可以将各种类型的数据赋值给同一个变量 一.js变量的类型及申明方式 var i=100;//Number类型 var i="variable";//String类型 var i=false;//boolen类型 var i={x:4};//Object类型 var i=[1,2,3];//Array类型 前三种是基本类型,后两种为引用类型 1.引用类

JS变量、作用域、 内存(含 预解析面试题)

一.变量 1. 变量 命名: 变量名以$.字母.下划线开头 驼峰命名法 变量名要有意义 2. 变量 声明 声明多个变量:var message, name, age; 重复声明无效,只看第一次声明[特殊:函数内形参 与 函数内的函数名(函数声明方式创建的函数) 重名,以函数名声明为准] <script> console.log(typeof a); function a() {} var a = 10; </script> // 输出:function <script>

js变量的作用域详解

JavaScript中的变量作用域问题对一些初学前端的人来说可能是一个很头疼的问题,但是我相信,等你看完这篇文章之后你会有一个相对明确的理解 首先,我们来看看下面的两段代码输出结果分别是什么. 代码一: var a = 1; function func(){ var a; alert(a); a = 2; alert(a); } func(); 代码二: var a = 1; function func(){ alert(a); a = 2; alert(a); } func(); 这里就涉及到

JS 变量的作用域

变量的作用域,是指变量的作用范围.也就是说,变量只在特定范围有效,超出该范围无效. 在JavaScript中,有两种变量,全局变量和局部变量: 全局变量:可以在脚本中的任何位置被调用,全局变量的作用域是当前文档中整个脚本区域. 局部变量:只能在此变量声明语句所属的函数内部使用,局部变量的作用域仅为该函数体. 声明变量时,要根据编程的目的决定将变量声明为全局变量还是局部变量.一般而言,保存全局信息(如用户信息.菜单选项等)的变量需声明为全局变量,而保存临时信息(如待输出的格式字符串.数学运算中间变

js:变量,作用域以及内存问题

最近在重读<javascript高级程序设计>这本书,"温故而知新",古人诚不欺我,再看的时候发现很多知识是之前不理解便跳过的,也有很多之前只是知道并记住了,并不能形成一套体系,而不断的回顾,不断地总结,我发现有很多零零散散的知识点在不经意间就被串在了一起,恍然大悟的感觉甚是美妙 而我一向喜欢思维导图和记忆的方式去学习总结,在用文字表达和总结方面显得很贫乏,所以打算用这种博客的形式来记录下重读过程中的总结,就当是记个笔记,也顺便练练表达能力 变量: js中的变量可能包含两种

js 变量和作用域

1.基本类型和引用类型的值 在js中,变量可能包含两种不同数据类型的值,基本类型值和引用类型值.基本类型值指的是简单的数据段,而引用类型值指的是那些可能由多个值构成的对象. 1.1.动态的属性 定义基本类型值和引用类型值得方式是类似的,创建一个变量并且为该变量赋值.但是,当这个值保存到变量中以后,对不同类型值可以执行的操作,对于引用类型的值,我们可以对其添加属性和方法.也可以改变和删除其属性和方法. var person = new Object(); person.name = 'Tom';

js变量的作用域

1.js函数声明和函数表达式的区别 Js中的函数声明是指下面的形式: function a(){} js中的函数表达式是指下面的形式: var a=function(){} js的解析器对函数声明与函数表达式并不是一视同仁地对待的. 对于函数声明,js解析器会优先读取,确保在所有代码执行之前声明已经被解析,而函数表达式,如同定义其它基本类型的变量一样,只在执行到某一句时也会对其进行解析 所以在实际中,它们还是会有差异的,具体表现在,当使用函数声明的形式来定义函数时,可将调用方式在函数声明之后,而