最近又重新再看了一遍《javascript从入门到精通》,整理一些学习笔记,从另一个侧面,从平时使用中经常遇到的概念和问题来学习一遍javascript。
都知道变量定义统一都是var;变量命名也由相应规范:
首先avaScript 是一种区分大小写的语言,因此将一个变量命名为 computer 和将其命名为 Computer是不一样的。
另外,变量名称的长度是任意的,但必须遵循以下规则:
1.第一个字符必须是一个字母(大小写均可)、或一个下划线(_)或一个美元符 ($)
2.后续的字符可以是字母、数字、下划线或美元符。
3.变量名称不能是保留字。
但这里不得不提一下变量作用域的概念。
作用域:编程语言通用概念,可以简单理解为定义的变量有效使用的范围
一、在js里,如果变量定义在function里,如
<html>
<head>
<title>test</title>
<script type="text/javascript">
function test() {
var param = "hello world!";
alert(param);//页面弹出提示框显示"hello world!"
}
/*
浏览器控制台会报错 ReferenceError: param is not defined;
因为param超出了其作用域;即param只在function test内有效,
在外部相当于不存在一样
* */
alert(param);
</script>
</head>
<body onload="test()">
</body>
</html>
二、如果在相同作用域中定义了2个名称一样的变量,那第二个变量将覆盖前一个,包括类型的覆盖。
<html>
<head>
<title>test</title>
<script type="text/javascript">
function test() {
var param = "hello world!";
alert(param);//页面弹出提示框显示"hello world!"
var param =100;
alert(param);//因为变量名称重复,因此会覆盖,显示"100"
}
</script>
</head>
<body onload="test()">
</body>
</html>
此规则同样适用于方法名的定义,例如
<html>
<head>
<title>test</title>
<script type="text/javascript">
function test() {
var param = "hello world!";
alert(param);//页面弹出提示框显示"hello world!"
}
function test() {
var param =100;
alert(param);//方法的覆盖,最终执行的是这个方法,显示"100"
}
</script>
</head>
<body onload="test()">
</body>
</html>
三、如果在function外部定义的变量,就会作为全局变量,会被当前页面的所有js共享。所以一定要慎用全局变量。这里又不得不提一点,整个页面引入的js,或者页面中script标签中写的js,可以简单的想象为这些js其实相当在一个js文件中;所有的全局方法名和全局变量名都要保证不冲突。
有时候在2个js文件中实现了2中业务逻辑,然后在一个页面中同时引这2个js;如果全局名称重复,就经常出现莫名的问题。
这里又不得不提及一下关于变量的"命名空间"问题。所谓"命名空间",可以简单的理解为:为了解决全局变量名带来的问题,所谓为每个变量名分配自己的空间(这个概念所有语言是相同的),这样变量在自己空间里定义,不管叫什么都不会影响其他空间内的变量。(当然如果你可以在自己项目中,对每个js中变量的定义都有规范,可以忽略此条;但一般估计不会)。关于如何实现命名空间后面再详细说明。
这里又会问了,我写了那么多js,肯定出现了同样名称的变量,为啥没出问题了。这里要强调的是,在当前页面中。就像页面中的id属性一样,理论上应该在整个浏览器显示出来的当前页面中都不重复(frame页面另说),但2个页面中相同的id,浏览地址切换了,当然上个页面就不存在了。因此id肯定也不冲突。
但要注意一些js的tabpanel框架,例如Extjs的tabpanel。虽然它展现了我们编写的不同页面,但实际这些页面都在当前一个页面中(直观的说因为浏览地址没有改变;frame页面另说),因此你就要注意所有的页面中的id,js中的变量名,方法名都不能重复。
<html>
<head>
<title>test</title>
<script type="text/javascript">
var param = "hello world!";
function test() {
test1();
test2();
}
function test1(){
alert(param);//页面弹出提示框显示"hello world!"
}
function test2(){
alert(param);//页面弹出提示框显示"hello world!"
}
</script>
</head>
<body onload="test()"></body>
</html>
但全局变量被覆盖的情况有个神奇的地方;如下
<html>
<head>
<title>test</title>
<script type="text/javascript">
var param = "hello world!";
function test() {
alert(param);//页面弹出提示框显示"undefined"
/*
这是一个神奇的情况,如果方法内定义了与全局变量同名的变量,
那上边的alert显示的其实是undefined,在对param赋值后
alert的结果是"100"
* */
var param =100;
alert(param);
}
</script>
</head>
<body onload="test()"></body>
</html>
四、如果定义变量时没有加上var,将会有自动补全的效果,就好像是你已经写了var一样。例如
<html>
<head>
<title>test</title>
<script type="text/javascript">
function test() {
param = "hello world!";
alert(param);//页面弹出提示框显示"hello world!"
}
alert(param);//浏览器控制台会报错 ReferenceError: param is not defined;
</script>
</head>
<body onload="test()"></body>
</html>
分享到:
相关推荐
### JavaScript语言基础知识点详解 #### 1. 变量定义 **JavaScript** 是一种广泛使用的脚本语言,常用于Web前端开发。对于初学者来说,理解变量定义的基础知识至关重要。 - **变量命名规则**: - 变量名区分大小...
动态类型:JavaScript 是一种动态类型语言,你不需要提前声明变量的类型。 学习 JavaScript 的基础 变量和数据类型:学习如何声明变量以及 JavaScript 支持的数据类型。 操作符和表达式:了解如何使用各种操作符...
JavaScript语言基础课程由龙刚讲师主讲,讲师在2009年加入淘宝的用户体验设计团队(UED),并参与了淘宝门户的前端开发工作。到了2011年,龙刚讲师转到了SNS前端组,主要工作内容包括参与SNS组件开发和“我的淘宝”...
本文将基于“JavaScript语言基础知识点总结十张图”这一主题,深入探讨JavaScript的基础概念、语法特性以及核心知识点。 1. **变量与数据类型** JavaScript有七种数据类型:Undefined、Null、Boolean、Number、...
JavaScript是Web开发中不可或缺的一部分,尤其在2015年,它已经发展成为一种功能强大的全栈编程语言。本篇文章将深入探讨2015年JavaScript中的关键语句,帮助开发者掌握这一时期的JavaScript核心技术。 首先,我们...
以上是JavaScript语言基础的概览,每个话题都包含了丰富的细节和实际应用,对于初学者来说,理解并掌握这些知识点是成为合格的JavaScript开发者的第一步。通过不断练习和项目实践,你将能够运用这些知识构建出复杂的...
1. **基础语法**:JavaScript的基础语法包括变量声明(var、let、const)、数据类型(原始类型和引用类型)、运算符(算术、比较、逻辑、赋值等)、流程控制(条件语句、循环语句)以及函数定义等。书中会详细介绍...
JavaScript是一种广泛应用于网页和网络应用开发的脚本语言,它主要负责实现客户端的交互和动态效果。在JavaScript中,变量是编程的基础元素,用于存储和处理数据。本篇将深入探讨JavaScript中的变量及其相关概念。 ...
JavaScript是一种轻量级的编程语言,具有以下特性: - **解释性语言**:JavaScript代码不需要提前编译,在运行时逐行解释执行。 - **单线程**:JavaScript的核心执行模型是单线程的,这意味着同一时间只能执行一个...
"零基础学会JavaScript"的学习之旅将带你逐步掌握这门语言的基础到高级技巧。 首先,JavaScript的核心概念是变量、数据类型和操作符。变量用于存储数据,可以随时改变其值。数据类型包括基本类型(如字符串、数字、...
适合人群:适合初学者和有一定基础的开发者,希望系统学习JavaScript语言的人群。 使用场景及目标:①掌握JavaScript的基础语法和常用编程概念;②熟悉JavaScript中的函数、对象和数组的操作;③理解面向对象编程的...
- **变量定义**:变量是编程语言中用于存储数据的基本单元。在JavaScript中,变量作为存放数据的“容器”,其内容可以在程序运行过程中被更改。 - **变量示例**: - ```javascript var variableName = "some ...
在实际学习过程中,这通常涉及到理解变量的声明与赋值、数据类型的区分(如字符串、数字、布尔值等)、流程控制(如条件语句和循环)以及函数的定义与调用。 林元青作为青山院的掌尊,类似于教育者的角色,他提供给...
以下是对JavaScript语言基础的详细总结,涵盖的主要知识点包括变量、数据类型、操作符、控制流、函数、对象、数组、闭包、原型链等。 1. 变量与数据类型: - 变量:在JavaScript中,使用`var`、`let`或`const`...
《JavaScript语言精粹》这本书深入浅出地探讨了这一语言的核心概念和技术,旨在帮助开发者更好地理解和掌握JavaScript的精髓。 首先,JavaScript的核心特性包括弱类型、动态类型、基于原型的对象模型以及函数作为...
这篇总结涵盖了JavaScript语言的基础知识,帮助初学者快速上手并深入理解这门强大的脚本语言。 首先,我们来看“JavaScript 数据类型”。JavaScript有七种数据类型:Undefined、Null、Boolean、Number、BigInt、...
JavaScript,作为一种广泛应用于Web开发的脚本语言,是前端开发的核心技术之一。它在网页交互、动态内容更新、用户界面优化等方面发挥着至关重要的作用。本教程将深入浅出地介绍JavaScript的基础知识,并结合实际...
本文将基于一位有着丰富经验的40岁Web前端开发者所总结的JavaScript语言基础知识进行详细阐述。 一、变量与数据类型 在JavaScript中,变量的声明使用var、let或const关键字。var是函数作用域,let和const则是块级...
JavaScript语法基于ECMAScript规范,这是一种标准化的语言定义,确保在不同环境下的兼容性。学习JavaScript语法时,你会接触到变量、数据类型(如字符串、数字、布尔值、null和undefined)、操作符(如算术、比较和...