JavaScript快速入门-ECMAScript基础语法
一、JavaScript引入方式
1、行内式
<script>
alert(123);
</script>
2、外链式
<script src='custom.js'></script>
二、JavaScript基础语法
1、变量
a、变量区分大小写;
b、JavaScript中变量是弱类型,即无需声明变量的具体类型,比如int、string等。
c、变量定义
- 定义单个变量:var a=123;
- 一行声明多个变量var a=123,b='test';
- 注意定义时用关键字:var。如果不用var,则为全局变量。
d、变量命名,首字符只能是字母,下划线,$美元符 三选一
e、变量命名规则
Camel 标记法
首字母是小写的,接下来的字母都以大写字符开头。例如:
var myTestValue = 0, mySecondValue = "hi";
Pascal 标记法
首字母是大写的,接下来的字母都以大写字符开头。例如:
Var MyTestValue = 0, MySecondValue = "hi";
匈牙利类型标记法
在以 Pascal 标记法命名的变量前附加一个小写字母(或小写字母序列),说明该变量的类型。例如,i 表示整数,s 表示字符串,如下所示“
Var iMyTestValue = 0, sMySecondValue = "hi";
2、基础规范
- a、每行结束可以不加分号. 没有分号会以换行符作为每行的结束,最好加分号;
- b、注释 支持多行注释和单行注释: /* */ //
- c、{}作为代码块
3、关键字
ECMA-262 描述了一组具有特定用途的关键字。这些关键字可用于表示控制语句的开始或结束,或者用于执行特定操作等。按照规则,关键字也是语言保留的,不能用作标识符。以下就是ECMAScript的全部关键字(带*号上标的是第5 版新增的关键字):

4、保留字
ECMA-262 还描述了另外一组不能用作标识符的保留字。尽管保留字在这门语言中还没有任何特定的用途。但它们有可能在将来被用作关键字。以下是ECMA-262 第3 版定义的全部保留字:

在严格模式下,第5 版还对以下保留字施加了限制:

5、值
在 ECMAScript 中,变量可以存在两种类型的值,即原始值和引用值。类似python里面的传值和传引用。一个是内存地址、一个是索引地址或指针。
原始值
存储在栈(stack)中的简单数据段,也就是说,它们的值直接存储在变量访问的位置。
引用值
存储在堆(heap)中的对象,也就是说,存储在变量处的值是一个指针(point),指向存储对象的内存处。
如果一个值是引用类型的,那么它的存储空间将从堆中分配。由于引用值的大小会改变,所以不能把它放在栈中,否则会降低变量查寻的速度。相反,放在变量的栈空间中的值是该对象存储在堆中的地址。地址的大小是固定的,所以把它存储在栈中对变量性能无任何负面影响。如下图所示:

6、原始类型
ECMAScript 有 5 种原始类型(primitive type),即 Undefined、Null、Boolean、Number 和 String。
a、Undefined:未定义的。类型是Undefined,值是undefined。
- 比如定义变量:var a。定义一个变量,并不给他赋值,这时它的值就是undefined。
- 如果使用一个未定义的变量b,它也是Undefined类型,值是undefined 。
- 一个函数无明确返回值时,它也是Undefined类型。
b、Null:空。类型是Null,值是null。值 undefined 实际上是从值 null 派生来的,因此 ECMAScript 把它们定义为相等的。
- 注意:null=undefined【字面量相等,就是值相等】。尽管这两个值相等,但它们的含义不同。undefined 是声明了变量但未对其初始化时赋予该变量的值,null 则用于表示尚未存在的对象。如果函数或方法要返回的是对象,找不到该对象时,返回的通常是 null。
c、Boolean 布尔类型
- true和false。字面量为0和1。
d、Number类型
- 1、整数 var a=123;
- 2、浮点数 var b=2.123;
- 3、八进制数 var c=0123;
- 4、十六进制数 var d=0x123;
- 5、特殊的Number
- Number.MAX_VALUE 和 Number.MIN_VALUE表示数字的边界,最大值和最小值。
- NaN:当类型转换失败时就会出现这种数据类型。比如当一个字符串转换为数字时,就是出现。(Not a Number。)
- 由于NaN字面意思是:不是一个数字,所以NaN不用于算术运算。
- 同时,NaN!=NaN。而我们一般使用isNaN()函数,比如isNaN(‘test’)输出true。
e、String 字符串类型
1、由Unicode字符、数字、标点符号组成的序列
2、字符串由单引号或双引号括起
3、字符串中部分特殊字符必须加上转义线\。常用的转义字符 \n:换行 \':单引号 \":双引号 \\:右划线
7、类型转换
JavaScript是松散类型的语言。当变量被赋值时才确定数据类型,这一点和python一样。但是比python更松散。
比如:
var a=123;
var b='123';
a+b 的结果为'123123'
- 数字 + 字符串:数字转换为字符串
- 数字 + 布尔值:true转换为1,false转换为0
- 字符串 + 布尔值:布尔值转换为字符串true或false
- 转换成字符串:toString()
- 转换成数字:parseInt()
- 转化成浮点数:parseFloat
- 强制类型转换:String()、Boolean()、Number()
8、类型查询:typeof
typeof(123); #number
9、引用类型
引用类型通常叫做类(class),也就是说,遇到引用值,所处理的就是对象。类似python中的type类。其实他本身就是一个类。
var o = new Object(); #typeof(o) object
var oBooleanObject = new Boolean(true);
var oNumberObject = new Number(68);
var oStringObject = new String("hello world");
JavaScript快速入门-ECMAScript基础语法的更多相关文章
- JavaScript快速入门-ECMAScript函数
JavaScript函数(定义.参数.返回值.闭包.匿名函数) 一.函数定义 function functionName(arg0, arg1, ... argN) { statements } 函数 ...
- JavaScript快速入门-ECMAScript运算符
1.逻辑运算符 逻辑与:&&(and) 逻辑或:||(or) 逻辑非:!(not) 逻辑 AND 运算符(&&) 逻辑 AND 运算的运算数可以是任何类型的,不止是 B ...
- JavaScript快速入门-ECMAScript语句
JavaScript语句(if.for.for in.do...while.while.break.continue.switch) 一.if语句 if (condition) statement1 ...
- JavaScript快速入门-ECMAScript对象介绍
一.概念介绍 在 ECMAScript 中,所有对象并非同等创建的.一般来说,可以创建并使用的对象有三种:本地对象.内置对象和宿主对象. 要理解这三种对象,先要理解宿主环境. 1.宿主环境 一般宿主环 ...
- JavaScript快速入门-ECMAScript本地对象(String)
一.String对象 String对象和python中的字符串一样,也有很多方法,这些方法大概分为以下种类: 1.索引和查找 1.charAt() 返回指定位置的字符. 2.charCodeAt( ...
- JavaScript快速入门-ECMAScript本地对象(RexExp)
一.概述 RegExp 对象表示正则表达式,它是对字符串执行模式匹配的强大工具. 正则表达式是由一个字符序列形成的搜索模式. 当你在文本中搜索数据时,你可以用搜索模式来描述你要查询的内容. 正则表达式 ...
- javascript快速入门24--XML基础
XML简介 XML代表Extensible Markup Language(eXtensible Markup Language的缩写,意为可扩展的标记语言).XML 被设计用来传输和存储数据.XML ...
- javascript快速入门14--DOM基础
DOM(Document Object Model)——文档对象模型 什么是DOM? Document Object Model (DOM)是HTML和XML文档的编程接口.它提供了上述文档的一种结构 ...
- JavaScript快速入门-ECMAScript本地对象(Array)
Array对象 Array对象和python里面的list对象一样,是用来存储多个对象值的对象,且方法和属性基本上类似. 一.属性 lenght 二.方法 1.concat() 用于连接两个或多个 ...
随机推荐
- 反射式DLL注入--方法
使用RWX权限打开目标进程,并为该DLL分配足够大的内存. 将DLL复制到分配的内存空间. 计算DLL中用于执行反射加载的导出的内存偏移量. 调用CreateRemoteThread(或类似的未公开的 ...
- python的类基础
python类的基础: 1,面向对象的基本概念 类(Class): 用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例. 类变量:类变量在整个实例化的 ...
- leveldb源码分析--SSTable之逻辑结构
SSTable是leveldb 的核心模块,这也是其称为leveldb的原因,leveldb正是通过将数据分为不同level的数据分为对应的不同的数据文件存储到磁盘之中的.为了理解其机制,我们首先看看 ...
- HttpWebRequest抓取网页内容与直接输入URL得到的内容不一致!球大神帮忙!!
一.前言 我在做一个百度收录情况查询的软件,就是通过软件来批量查询文章链接是否被百度收录,主要是用来查询某个网址的收录次数还有网站的排行数,思路是借鉴别人的. 二.问题描述 首先需要考虑的是能够支持哪 ...
- tp5 migrate数据库迁移工具
tp5相对与tp3.2有很大的不同 migrate是其中一点,通过migrate程序员可以在php代码中创建数据库修改回滚等操作 首先下载migrate扩展,命令行到当前项目目录下执行 compose ...
- Hash Tables
哈希表 红黑树实现的符号表可以保证对数级别的性能,但我们可以做得更好.哈希表实现的符号表提供了新的数据访问方式,插入和搜索操作可以在常数时间内完成(不支持和顺序有关的操作).所以,在很多情况下的简单符 ...
- ansible(一)
Ansible简介 Ansible:Ansible的核心程序Host Lnventory:记录了每一个由Ansible管理的主机信息,信息包括ssh端口,root帐号密码,ip地址等等.可以通过fil ...
- Failed to abandon session scope: Connection timed out
系统log 出现 Failed to abandon session scope: Connection timed out 错误, reboot无法重启 解决办法就是让postfix只用IPv4 ...
- 【转】微信开发-NATAPP的使用
1.为什么使用natapp 1.1 在进行微信公众号开发时,我们需要搭建网站,并且有可能需要将项目部署到外网可访问的域名上,并且随时都有可能修改网站内容进行调试.如果能够将内网ip映射到外网上,大大方 ...
- SQL 字符串分割表函数
--字符串分割表函数 ) ) declare @i int; declare @count int; ); ); declare @Index int; )) declare @rowID int; ...