JavaScript中变量声明有var和没var的区别示例介绍_javascript技巧
本文来论述JavaScript中变量声明有var和没var的区别,关于Js中的变量声明的作用域是以函数为单位,所以我们经常见到避免全局变量污染的方法是
(function(){ // ... })();
在函数内部,有var和没var声明的变量是不一样的。有var声明的是局部变量,没var的,声明的全局变量,所以可以借此向外暴露接口东东。
在全局作用域内声明变量时,有var 和没var看起来都一样,我们知道,声明的全局变量,就是window的属性,究竟是否一样,我们通过ECMAScrpit5提供的属性的特性查询方法,来发现之间的区别。
var fff = 2; window.ffa = 3; ffb = 4; this.ffc = 4; var ffftx = Object.getOwnPropertyDescriptor(window, 'fff'); //configurable:false,enumerable:true,value:2,writable:true var ffatx = Object.getOwnPropertyDescriptor(window, 'ffa'); //configurable:true,enumerable:true,value:2,writable:true var ffbtx = Object.getOwnPropertyDescriptor(window, 'ffb'); //configurable:true,enumerable:true,value:2,writable:true var ffctx = Object.getOwnPropertyDescriptor(window, 'ffc'); //configurable:true,enumerable:true,value:2,writable:true
通过上面,发现,原来还是有差别的,我们再用delete删除属性来验证下,配置性为false的属性无法删除。也就是通过变量var声明全局对象的属性无法删除,我们还会发现和函数声明创建的全局对象属性也无法删除。
delete fff; // 无法删除 delete ffa; // 可删除 delete ffb; // 可删除 delete ffc; // 可删除
结论就是,加上var 和没加 var的声明全局变量是有区别的。
使用var语句重复声明语句是合法且无害的。如果重复声明且带有赋值,那么就和一般的赋值语句没差别。如果尝试读取没有声明过的变量,Js会报错。
JavaScript的函数作用域内,声明的变量或内部函数,在函数体内都是可见的。意味着,函数在定义之前可能已经可用。函数定义有两种方式,一种是函数定义表达式,一种是函数声明语句。
// 函数定义表达式 var fns = function (){ // ... }; // 函数声明语句 function fns(){ // ... }
函数声明语句“被提前”到外部脚本或外部函数作用域的顶部,所以以这种方式声明的函数,可以被再它定义之前出现的代码所调用。而函数定义表达式中,变量的声明被提前了,但是给变量的赋值是不会提前的,所以,以表达式方式定义的函数在函数定义之前无法调用。
(function() { testa(); // 打印出testa testb(); // 报错:提示undefined is not a function console.log(testc); //undefined,如果移到上面就可以了 function testa() { console.log("testa"); } var testb = function() { console.log("tesb"); } var testc = "testc"; })();
当然,我们声明变量和函数,必须遵守基本的规范,变量和函数声明要提前。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

解决C++代码中出现的“error:useofundeclaredidentifier'variable'”问题在使用C++进行编程时,我们经常会遇到各种各样的错误。其中一种常见的错误是“error:useofundeclaredidentifier'variable'”。这个错误通常意味着我们在代码中使用了一个未声明的变量。这篇文章将详

本篇文章给大家带来了关于JavaScript的相关知识,其中主要给大家介绍了var、let以及const的区别有哪些,还有ECMAScript 和 JavaScript的关系介绍,感兴趣的朋友一起来看一下吧,希望对大家有帮助。

音频输出和输入需要特定的驱动程序和服务才能在Windows11上按预期工作。这些有时最终会在后台遇到错误,从而导致音频问题,如无音频输出、缺少音频设备、音频失真等。如何修复在Windows11上没有响应的音频服务我们建议您从下面提到的修复开始,并逐步完成列表,直到您设法解决您的问题。由于Windows11上的多种原因,音频服务可能无法响应。此列表将帮助您验证和修复阻止音频服务在Windows11上响应的大多数问题。请按照以下相关部分帮助您完成该过程。方法一:重启音频服务您可能会遇

PHP中var关键字的作用和示例在PHP中,var关键字用于声明一个变量。以前的PHP版本中,使用var关键字是声明成员变量的惯用方式,现在已经不再推荐使用。然而,在某些情况下,var关键字依然会被使用。var关键字主要用于声明一个局部变量,并且会自动将该变量标记为局部作用域。这意味着该变量仅在当前的代码块中可见,并且不能在其他函数或代码块中访问。使用var

PHP是一种非常流行的Web开发语言,它允许开发人员在服务器端创建动态Web应用程序。在PHP中,变量是一种基本的数据结构,用于存储值和数据。本文将介绍如何在PHP中使用变量。变量的基本语法在PHP中声明变量的语法非常简单。变量名以美元符号($)开头,后面跟着变量名。变量名可以是字母、数字或下划线的组合,但必须以字母或下划线开头。例如,下面的代码声明了一个名

报错的原因这个错误消息表明,在python代码中,使用了一个对象(由self变量表示),但是该对象没有一个名为k的属性。这可能是由于该对象没有定义这个属性,或者是在代码中类型错误导致该对象不是预期的类型。如何解决要解决这个错误,可能需要进行以下操作之一或多个:检查代码中的错误,确保self变量引用的对象具有名为k的属性。检查代码中的类型错误,确保self变量引用的对象是预期的类型。如果是缺少属性的话,需要在类里定义这个属性使用tryexcept来获取这个错误如果确定了k是类里没有定义的属性,请确

llet、var、const分别代表块作用域变量、函数作用域变量和常量。详细介绍:1、let,用于声明一个块作用域的变量,使用let声明的变量不能在它被声明之前被访问,这就是所谓的暂时性死区;2、var,用来声明变量的关键字,声明的变量是函数作用域或全局作用域的,不受块级作用域的限制;3、const,用来声明一个常量,一旦被赋值就不能再被重新赋值的变量,值在声明后不能被修改等。

快速入门Golang变量声明和赋值的基本语法概述:Golang是一种静态类型、编译型的编程语言,具有优秀的性能和开发效率。在Golang中,变量声明和赋值是我们编写程序时经常使用的基本操作之一。本文将带你快速入门Golang变量声明和赋值的基本语法,并提供具体的代码示例。变量声明:在Golang中,我们需要使用var关键字来声明一个变量,并指定变量的类型。变
