JavaScript知识架构学习路径(一)- 变量篇
【摘要】本文是专为JavaScript入门者而总结的,总体上将JavaScript的基础部分分成了九大块,分别是变量、运算符、数组、流程控制结构、字符串函数、函数基础、DOM操作基础、文档对象模型DOM和正则表达式。
【关键字】变量、运算符、数组、流程控制结构、函数、DOM、正则表达式。
本篇文章的主要内容是围绕着JavaScript(以后简称JS)的基础进行归纳与总结的,一方面可以给入门级的JS爱好者提供一个学习的路径,另一方面,也可以给稍有基础的JS学习者进行知识梳理用。
作为网页设计三层分离结构中的第三部分,JS的作用与地位毋庸置疑,然而,想系统化掌握JS的基础,为后续的高阶学习做好铺垫,还必须要对JS的基本内容有清晰的认识,所以,在此将JS的基础部分分为九大模块来进行归纳。
一、JS变量
对于变量而言,我们主要要从四个方面来掌握,具体包括命名、声明、类型和作用域,这四个方面在其他的编程语言中也一样存在,下面我们就具体来分别归纳:
1、命名
在变量的命名方面,我们需要了解命名的方法和命名的规则。i
(1)命名的方法
命名的方法在实际的项目中,我们通常会有两大类,一类是匈牙利命名法,这种命名法的写法是:变量名=类型+对象描述,例如我们要命名一个表单变量时,我们首先知道,该变量的类型是表单(form),同时,我们要知道这个表单的功能或含义,比如说这个表单是一个Switchboard,所以此时,我们对这个表单变量的命名应该为frmSwitchboard,这样,其他人在阅读你的代码时,就很容易理解了,当看到frm的时候,就知道你这个变量是一个表单变量了。
除了匈牙利命名法之外,另一类是驼峰命名法,这也是当前大多数项目中经常使用的命名方法,而驼峰命名法又分为大小写。如果全部是小写的命名,那么每两个单词之间是使用一个下划线“_”来连接的,例如:frm_switch_board;如果命名中大小写同时存在,此时,又将其分为大驼峰和小驼峰。大驼峰的命名是每个单词的首字母都是大写字母,例如:FrmSwitchBoard;而小驼峰的命名是第一个单词的首字母要小写,其后的单词的首字母都要大写,例如:frmSwitchBoard。
以上就是变量的命名方法,当前,国内主要采用的命名方法是小驼峰命名法。那么,我们在了解命名方法的同时,我们还必须同时掌握类型的问题,在JS中,类型主要有以下几种:
<1>Int类型 — i
<2>Float类型 — fl
<3>Boolean类型 — b
<4>String类型 — s
<5>Array数组 — a
<6>Object对象 — o
<7>Function函数 — fn
<8>Regular Expression正则 — re
我们在了解了类型之后,接下来我们再来看看变量命名的规则问题。
(2)命名的规则
我们之所以要了解变量的命名规则,目的是为了让我们命名的变量合法,也就是说可以正常使用。
在JS中,变量命名的规则一般需要遵循以下三条:
<1>变量名的首字符只能是英文字母或者下划线;
<2>变量名可以由英文字符、数字和下划线组成,不能包含其他的特殊字符,如@、!等字符;
<3>变量名不能是JS中的关键字或保留字。
2、声明
我们在完全理解并掌握了变量的命名之后,接下来我们来看看变量的声明问题。对于变量的声明,我们也需要把握好以下三个原则:
(1)JS中的变量通常是显式声明,例如:var 变量名;
(2)在声明变量时,我们切忌出现几个问题。其一,声明的变量没有数据类型;其二,重复声明变量;其三,隐式声明变量;其四,不声明而直接赋值。
而解决此类问题的一个最简单的办法就是先写变量声明符var,紧接着就写变量名,最后再直接给变量赋初值,例如:“var i = 0;” ;
(3)我们在声明变量时还需要养成一个好习惯,简单概括就十二个字:先声明、后读写、先赋值、后运算。
3、类型
对于变量而言,它其实可以分为两大类,一类是值类型,另一类是引用类型。
(1)值类型
对于值类型的变量,它具备以下几个特征:
<1>占用的存储空间是固定的;
<2>在保存与复制的时候,操作的是值本身;
<3>可以使用JS中的类型检测函数typeof()来检测其具体的类型;
(2)引用类型
而引用类型的变量,它也具备几个特征:
<1>变量占用的存储空间不是固定的;
<2>在保存与复制的时候,操作的是指向该变量的一个指针;
<3>可以通过instanceof()函数来检测其数据类型
同时,我们还需要了解的一个问题,那就是使用new()方法构造出的对象是属于引用类型的变量。
4、作用域
我们在了解了变量的命名、声明和类型之后,我们最后再来看看,在实际的项目中,我们所使用的变量的另外一个比较关键的问题,那就是变量的作用域。在此,我们首先根据变量的作用域,将变量划分为三级,具体是全局变量、局部变量和参数变量。
对于上述三级变量,我们分别从写法到调用,再到优先级最后再到特性等三个层次来总结。
(1)写法与调用
对于全局变量,它的写法要求我们在声明此变量的时候,要放在函数体的外部来进行声明,而调用的时候,可以在项目的任何位置进行;对于局部变量,它的写法要求我们必须在函数体的内部进行声明,而调用时,只能在函数体内部调用;再者,对于参数变量,它也是要求在函数声明的时候同时声明,而调用时,也必须出现在函数体的内部。
(2)优先级
在优先级方面,有三个参考的规则:
<1>同名的局部变量的优先级要高于全局变量;
<2>同名的参数变量的优先级也是高于全局变量;
<3>同名的局部变量的优先级高于参数变量。
(3)特性
对于变量的作用域,有以下一些特点:
<1>全局变量可以看作是全局对象的属性,而局部变量可以看作是调用对象的属性;
<2>内层函数可以访问外层函数的局部变量,但外层函数不能访问内层函数的局部变量;
<3>在变量的生命周期方面,全局变量除非被删除,否则将一直存在,局部变量则存活于自声明起到函数运行结束或者被删除之前。
以上内容就是我们在学习JavaScript时,对于变量方面需要掌握的知识点,希望能给大家带来参考。
摘自:这里
JavaScript知识架构学习路径(一)- 变量篇的更多相关文章
- JavaScript高级程序设计学习(三)之变量、作用域和内存问题
这次讲的主要是变量,作用域和内存问题. 任何一门编程语言,都涉及这三个. 变量,比如全局变量,局部变量等,作用域,也分全局作用域和方法作用域,内存问题,在java中就涉及到一个垃圾回收的问题,由于ja ...
- 【manim】学习路径1-安装篇-windows、macOS
下一章:https://www.cnblogs.com/remyuu/p/16462369.html 本系列以大量实战讲解manim数学动画引擎. 文档编辑器推荐:Sublime Text 这里是一些 ...
- (1)写给Web初学者的教案-----学习Web的知识架构
1:学习Web的知识架构 前文中我们简单的介绍了一些关于Web的基本知识,这里任老师再次强调一下凡是用浏览器打开的网站我们就称之为Web应用程序(B/S结构).除此之外其它需要下载安装的软件或是手机 ...
- JavaScript 学习笔记之最终篇
JavaScript 的学习算是最后一篇了...把JS基础已经核心的部分彻底的进行了学习... 唯一的缺陷就是自己在运用上并不是特别的熟练...今天是JS的最后一章内容了..也是JS 中最常用的内 ...
- SSM(spring mvc+spring+mybatis)学习路径——1-1、spring入门篇
目录 1-1 Spring入门篇 专题一.IOC 接口及面向接口编程 什么是IOC Spring的Bean配置 Bean的初始化 Spring的常用注入方式 专题二.Bean Bean配置项 Bean ...
- Python之路【第二十四篇】:Python学习路径及练手项目合集
Python学习路径及练手项目合集 Wayne Shi· 2 个月前 参照:https://zhuanlan.zhihu.com/p/23561159 更多文章欢迎关注专栏:学习编程. 本系列Py ...
- JavaScript基础知识(学习笔记)
1. 在JavaScript中所有事物都是对象:字符串.数字.数组.日期等等2. 在JavaScript中,对象是拥有属性和方法的数据3. 属性是与对象相关的值,方法是能够在对象上执 ...
- WEBBASE篇: 第十篇, JavaScript知识5
JavaScript知识5 <!doctype html> <html lang="en"> <head> <meta charset=& ...
- 【JDBC】学习路径1-JDBC背景知识
学习完本系列JDBC课程后,你就可以愉快使用Java操作我们的MySQL数据库了. 各种数据分析都不在话下了. 第一章:废话 JDBC编程,就是写Java的时候,调用了数据库. Java Databa ...
随机推荐
- nginx的Location的总结以及rewrite规则的总结
Location的语法: location 有”定位”的意思, 根据Uri来进行不同的定位. 在虚拟主机的配置中,是必不可少的,location可以把网站的不同部分,定位到不同的处理方式上. 比如, ...
- .NET高级工程师面试题之SQL篇
1 题目 这确实是一个真实的面试题,琢磨一下吧!知识不用,就会丢掉,我太依赖各种框架和dll了,已经忘记了最基本的东西.有多久没有写过SQL了,我已经不记得了. 已知表信息如下: Department ...
- Spark-1.0.1 的make-distribution.sh编译、SBT编译、Maven编译 三种编译方法
fesh个人实践,欢迎经验交流!本文Blog地址:http://www.cnblogs.com/fesh/p/3775343.html 本文编译方法所支持的hadoop环境是Hadoop-2.2.0, ...
- man curl_global_init(原创)
curl_global_init(3) libcurl 手册 curl_global_init(3) 名称 curl_global_init - lib ...
- [算法]树上倍增求LCA
LCA指的是最近公共祖先(Least Common Ancestors),如下图所示: 4和5的LCA就是2 那怎么求呢?最粗暴的方法就是先dfs一次,处理出每个点的深度 然后把深度更深的那一个点(4 ...
- iOS的设备及分辨率、图片命名
iOS的设备及分辨率(iPhone竖屏/iPad横屏) 设备 分辨率 横宽比 iPhone 3GS.iPod Touch第三代 320 * 480 2 : 3 iPhone 4.iPod Touch第 ...
- java核心知识点学习----创建线程的第三种方式Callable和Future CompletionService
前面已经指出通过实现Runnable时,Thread类的作用就是将run()方法包装成线程执行体,那么是否可以直接把任意方法都包装成线程执行体呢?Java目前不行,但其模仿者C#中是可以的. Call ...
- Scrum Meeting (Oct. 27 2014)
软件工程是一门十分有意思的课程,它不仅锻炼了我们开发软件的能力,更是给了我们结队作业的机会,在团队协作中,我们学会了欣赏别人,学会了品鉴自己,学会了如何集思广益凝聚成一个锐意进取的集体.继单人单词查询 ...
- DB2 UDB DBA 核对清单
本文摘自 http://www-128.ibm.com/developerworks/cn/db2/library/techarticles/dm-0404snow/index.htmlDB2 UDB ...
- POJ 3686 The Windy's 最小费用最大流
每个工厂拆成N个工厂,费用分别为1~N倍原费用. //#pragma comment(linker, "/STACK:1024000000,1024000000") #includ ...