JavaScript的基本概念
主要内容:
- 语法
- 数据类型
- 流控制语句
- 理解函数
ECMA-262描述了JavaScript语法等基本概念。目前,ECMA-262第3版中定义的ECMAScript是各个浏览器实现最多的版本。所以主要按照第3版地冠以的ECMAScript介绍语言的基本概念,并就第5版的变化给出说明
3.1 语法
3.1.1 区分大小写
例如 test与Text分别表示两个不同的变量。函数名称不能用typeof,但是TypeOf是一个有效的函数名。
3.1.2 标识符
所谓标识符,就是指变量、函数、属性的名字,或者函数的参数。标识符可以按照下列格式规则组合起来的一个或多个字符:
第一个字符必须是字母、下划线(_)或美元符号($)。
其他字符可以是字母、下划线、美元符号或数字。
标识符中的字母可以包含扩展的ASCII或Unicode字母字符,但是不推荐这样做。标识符命名采用驼峰命名法。
关键字、保留字、true、false和null不能用作标识符。
3.1.3 注释
与C风格注释相同,包括单行注释和块级注释。
//单行注释
/*
多行( 块级)注释
*/
3.1.4 严格模式
ECMAScript 5 引入了严格模式的概念。为JavaScript定义了一种不同的解析和执行模型。在严格模式下,ECMAScript 3 中一些不确定的行为将得到处理,而且对某些不安全的操作也会抛出错误。在整个脚本中启用严格模式,可以在顶部添加以下代码:
"use strict"
在函数内部的上方包含这条编译指示,也可以指定函数在严格模式下执行:
function doSomething(){
"use strict"
//函数体
}
支持严格模式的浏览器包括IE10+、Firefox 4+、Safari 5.1+、Opera 112+ 和Chrome。
3.1.5 语句
ECMAScript中的语句以一个分号结尾;如果省略分号,则由解析器确定语句的结尾。虽然语句结尾的分号不是必需的,但我们建议任何时候都不要省略它。因为这样可以避免很多错误。
3.2 关键字和保留字
ECMA-262描述了一组具有特定用途的关键字,这些关键字可用于表示控制语句的开始或结束,或用于执行特定的操作等。ECMAScript的全部关键字(带*号的是第5版新增关键字)如下:
ECMA-262还描述了另外一组不能用作标识符的保留字,它们有可能将来被用作关键字。以下是ECMA-262第3版定义的全部保留字:
第5版把非严格模式下运行时的保留字缩减为下列这些:
在严格模式下,第5版还对以下保留字施加了限制:
let和yield是第5版新增的保留字
3.3 变量
ECMAScript的变量是松散类型的,可以保存任何类型的数据。每个变量仅仅是一个用于保存值得占位符而已。定义变量时要使用var操作符。
var message;
这行代码定义了一个名字为message的变量,该变量可以用来保存任何值(未经初始化的变量,会保存一个特殊的值undefined)。ECMAScript也支持直接初始化变量,因此在定义变量的同时可以设置变量的值。
var message="hello";
message=100;//有效,但不推荐。
使用var操作符定义的变量将成为定义该变量的作用域中的局部变量。如果在函数中使用var定义一个变量,那么这个变量在函数退出后就会被销毁,例如:
function test(){
var message="hello";//局部变量
}
test();
alert(message);//错误
如果定义变量时,省略了var,这就会创建一个全局变量
function test(){
message="hello";//局部变量
}
test();
alert(message);//"hello"
这样,只要调用过一次test()函数,这个变量就有了定义,就可以在函数外部的任何地方被访问到。
虽然省略var操作符可以定义全局变量,但是我们不推荐这么做。因为在局部作用域中定义的全局变量很难维护,而且如果有意地忽略var操作符,也会由于相应 的变量不会马上就有定义而导致不必要的混乱。给未经声明的变量赋值在严格模式下会导致抛出ReferenceError错误。
可以使用一条语句定义多个变量,之间用逗号分隔
var message="hello",
found=false,
age=18;
在严格模式下,不能定义名为eval或arguments的变量,否则会导致错误。
JavaScript的基本概念的更多相关文章
- javascript,jquery(闭包概念)(转)
偶尔听人说javascript闭包,让我联想起以前学编译原理和数字逻辑里讲的闭包,以前上课讲的闭包很难懂,而且含有递归的意思在里面,现在不想再查看里面的闭包概念. 但javascript我是经常要用, ...
- JavaScript之DOM概念
一.DOM概念 1.DOM是什么? 1.1 起源.DOM起源于Netscape与Microsoft 公司的DHTML(动态HTML). 1.2 名词解释.Document Object Model,文 ...
- JavaScript之基本概念(一)
在我们学习一门编程语言之前,我们应该先了解它的一些基本概念,包括它是什么,它能用来干什么,怎么用等等.这部分内容建议学习时间一天. 一 何为‘JavaScript’ 1 . 什么是JavaScr ...
- JavaScript 的基本概念( ES5 )
语法 区分大小写 标识符 第一个字符必须是一个字母,下划线或者一个美元符( $ ).其他规则无论,最好按照通用的驼峰大小写. 注释 // 单行注释 /* 多行注释 */ 严格模式 在顶部添加如下代码 ...
- JavaScript闭包的概念及用法
1.闭包的概念: 闭包就是能够读取其他函数内部变量的函数. 例如: function f1(){ var n=999; function f2(){ alert(n); } return f2; } ...
- JavaScript函数的概念
函数是这样的一段代码,它只定义一次,但可能被执行或调用任意多次. JavaScript函数是参数化的:函数的定义会包含形参,这些参数在函数的整体中像局部变量一样工作.函数调用时会为形参提供实参的值.除 ...
- javascript中重要概念-闭包-深入理解
在上次的分享中javascript--函数参数与闭包--详解,对闭包的解释不够深入.本人经过一段时间的学习,对闭包的概念又有了新的理解.于是便把学习的过程整理成文章,一是为了加深自己闭包的理解,二是给 ...
- JavaScript一些关键概念
垃圾回收:http://www.cnblogs.com/dolphinX/p/3348468.html 引用计数和标记清除 作用链和闭包:http://www.cnblogs.com/dolphinX ...
- [javascript|基本概念|一元操作符]学习笔记
只操作一个值的操作符 递增/递减操作符 前置型/后置型 前置型:操作符位于操作数前面 e.g.: var a = 30; ++a; 等同于 var a = 30; a = a + 1; --> ...
随机推荐
- maven 手动执行下载
先把命令行切换到Maven项目的根目录,比如:/d/xxxwork/java/maven-test,然后执行命令: mvn clean compile
- uoj35 后缀排序
题目链接:http://uoj.ac/problem/35 这是一道模板题. 读入一个长度为 n 的由小写英文字母组成的字符串,请把这个字符串的所有非空后缀按字典序从小到大排序,然后按顺序输出后缀的第 ...
- wazuh安装手册
一.wazhu部署架构 1.服务器上运行的Agent端会将采集到的各种信息通过加密信道传输到管理端. 2.管理端负责分析从代理接收的数据,并在事件与告警规则匹配时触发警报. 3.LogStash会将告 ...
- WEB入门.七 CSS布局模型
学习内容 标准文档流 流动模型(flow model) 浮动模型(float model) CSS基本布局 能力目标 理解标准文档流 使用流动模型实现页面布局 使用浮动模型实现页面布局 掌握常用CSS ...
- netbeans工具使用xdebug断点调试php源码
对有有经验的程序员,使用echo.print_r().print_f().var_dump()等函数足以调试php代码,如果需要在IDE工具中使用断点调试,xdebug就是一个非常好的php调试工具. ...
- Luogu 1063 能量项链(动态规划)
Luogu 1063 能量项链(动态规划) Description 在Mars星球上,每个Mars人都随身佩带着一串能量项链.在项链上有N颗能量珠.能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某 ...
- fzyzojP3618 -- [校内训练-互测20180412]士兵的游戏
二分图匈牙利也可以 判断必须点就看能不能通过偶数长度的增广路翻过去 代码: (最后一个点4s多才行,,,卡不过算了) 开始边数写少了RE,应该是4*N*N M-R随手开了一堆int?都要是long l ...
- Java虚拟机性能监控与调优
1 基于JDK命令行工具的监控 1.1 JVM的参数类型 1.1.1 标准参数 在JVM的各个版本基本上保持不变,很稳定的. -help -server -client -version -showv ...
- RabbitMQ 相关概念
RabbitMQ 整体上是一个生产者与消费者模型,主要负责接收.存储和转发消息.可以把消息传递的过程想象成:当你讲一个包裹送到邮局,邮局会暂存并最终将邮件通过邮递员送到收件人的手上,RabbitMQ ...
- 300. Longest Increasing Subsequence_算法有误
300. Longest Increasing Subsequence 300. Longest Increasing Subsequence Given an unsorted array of i ...