新手学习javascript:)
这是我的html页面和相关的js代码
<!DOCTYPE html>
<html>
<head>
<title> A Basic Function </title>
<link rel="stylesheet" href="css/c03.css" />
</head>
<body>
<h1>Travelworth</h1>
<div id="message">Welcome to our site!</div>
<script src="js/basic-function.js"></script>
</body>
</html>
基本-function.js
var msg="A New Message"; //Line 1
var msg="A Second Message";//Line 2
function updatemessage()
{
var e = document.getElementById('message');
e.textContent = msg;
}
updatemessage();
Q1: -
此网页显示来自Line2而非Line1的消息。
我猜这是因为在第2行声明的“msg”变量被认为是“最新的”,并且解释器已经继续进行。
我的假设是对的吗?
Q2: -
如果是这种情况,则会出现网页可能使用不同人编写的多个js文件的情况。
如何在同一网页中引用的这两个不同js文件之间的全局变量上处理命名冲突?
有人可以解释一下吗?
答案 0 :(得分:0)
JavaScript有两个范围:全局和本地。在函数定义之外声明的变量是全局变量,其值可在整个程序中访问和修改。在函数定义中声明的变量是本地的。每次执行函数时都会创建和销毁它,并且函数外部的任何代码都无法访问它。 JavaScript不支持块作用域(其中一组大括号{...}定义了一个新作用域),除了块作用域变量的特殊情况。
对于块范围变量,请参阅What's the difference between using "let" and "var" to declare a variable?
对于Q1,请参阅What is the purpose of the var keyword and when to use it (or omit it)?
答案 1 :(得分:0)
你猜对了。声明两个具有相同名称的变量是个坏主意。 好的书面第三方库不使用全局变量 - 它们使用本地,或将多个变量封装在一起。