天天看点

js学习10---js基础JavaScript 数据类型JavaScript 错误 - throw、try 和 catchJavaScript 严格模式(use strict)JavaScript this 关键字JavaScript let 和 constavaScript JSON

js可以更可广泛用于服务器(我的领域)、PC、笔记本电脑、平板电脑和智能手机等设备。

ECMA-262 是 JavaScript 标准的官方名称。

JavaScript 由 Brendan Eich 发明。它于 1995 年出现在 Netscape 中(该浏览器已停止更新),并于 1997 年被 ECMA(一个标准协会)采纳。

ECMAScript 版本

JavaScript 已经由 ECMA(欧洲电脑制造商协会)通过 ECMAScript 实现语言的标准化。

年份 名称 描述
1997 ECMAScript 1 第一个版本
1998 ECMAScript 2 版本变更
1999 ECMAScript 3

添加正则表达式 

添加 try/catch

ECMAScript 4 没有发布
2009 ECMAScript 5

添加 "strict mode",严格模式

添加 JSON 支持

2011 ECMAScript 5.1 版本变更
2015 ECMAScript 6 添加类和模块
2016 ECMAScript 7

增加指数运算符 (**)

增加 Array.prototype.includes

ECMAScript 6 也称为 ECMAScript 2015。

ECMAScript 7 也称为 ECMAScript 2016。

使用 console.log() 写入到浏览器的控制台

<!DOCTYPE html>

<html>

<head></head>

<body>

    <script>

        var a=1;

        var b=3;

        console.log(a+b);

    </script>

</body>

</html>

js学习10---js基础JavaScript 数据类型JavaScript 错误 - throw、try 和 catchJavaScript 严格模式(use strict)JavaScript this 关键字JavaScript let 和 constavaScript JSON

JavaScript 字面量

数字(Number)字面量 可以是整数或者是小数,或者是科学计数(e)。

字符串(String)字面量 可以使用单引号或双引号:

数组(Array)字面量 定义一个数组:

[40, 100, 1, 5, 25, 10]

对象(Object)字面量 定义一个对象:

{firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"}

函数(Function)字面量 定义一个函数:

function myFunction(a, b) { return a * b;}

JavaScript 使用关键字 var 来定义变量, 使用等号来为变量赋值:在指令式语言中,变量通常是可变的。字面量是一个恒定的值。

JavaScript 数据类型

JavaScript 有多种数据类型:数字,字符串,数组,对象等等:

var length = 16;                                  // Number 通过数字字面量赋值 

var points = x * 10;                              // Number 通过表达式字面量赋值

var lastName = "Johnson";                         // String 通过字符串字面量赋值

var cars = ["Saab", "Volvo", "BMW"];              // Array  通过数组字面量赋值

var person = {firstName:"John", lastName:"Doe"};  // Object 通过对象字面量赋值

JavaScript 字符集

JavaScript 使用 Unicode 字符集。

JavaScript 语句标识符

JavaScript 语句通常以一个 语句标识符 为开始,并执行该语句。

语句标识符是保留关键字不能作为变量名使用。

下表列出了 JavaScript 语句标识符 (关键字) :

语句 描述
break 用于跳出循环。
catch 语句块,在 try 语句块执行出错时执行 catch 语句块。
continue 跳过循环中的一个迭代。
do ... while 执行一个语句块,在条件语句为 true 时继续执行该语句块。
for 在条件语句为 true 时,可以将代码块执行指定的次数。
for ... in 用于遍历数组或者对象的属性(对数组或者对象的属性进行循环操作)。
function 定义一个函数
if ... else 用于基于不同的条件来执行不同的动作。
return 退出函数
switch 用于基于不同的条件来执行不同的动作。
throw 抛出(生成)错误 。
try 实现错误处理,与 catch 一同使用。
var 声明一个变量。
while 当条件语句为 true 时,执行语句块。

Unicode 覆盖了所有的字符,包含标点等字符。

Value = undefined

在计算机程序中,经常会声明无值的变量。未使用值来声明的变量,其值实际上是 undefined。

在执行过以下语句后,变量 carname 的值将是 undefined:

var carname;

Undefined 和 Null

Undefined 这个值表示变量不含有值。

可以通过将变量的值设置为 null 来清空变量。

实例

cars=null;

person=null;

JavaScript 数据类型

值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、对空Null)、未定义(Undefined)、Symbol。

引用数据类型:对象(Object)、数组(Array)、函数(Function)。

注:Symbol 是 ES6 引入了一种新的原始数据类型,表示独一无二的值。

JavaScript 数组

下面的代码创建名为 cars 的数组:

var cars=new Array();

cars[0]="Saab";

cars[1]="Volvo";

cars[2]="BMW";

或者 (condensed array):

var cars=new Array("Saab","Volvo","BMW");

或者 (literal array):

实例

var cars=["Saab","Volvo","BMW"];

JavaScript 拥有动态类型

JavaScript 拥有动态类型。这意味着相同的变量可用作不同的类型:

JavaScript 对象

对象由花括号分隔。在括号内部,对象的属性以名称和值对的形式 (name : value) 来定义。属性由逗号分隔:

var person={firstname:"John", lastname:"Doe", id:5566};

上面例子中的对象 (person) 有三个属性:firstname、lastname 以及 id。

空格和折行无关紧要。声明可横跨多行:

var person={

firstname : "John",

lastname  : "Doe",

id        :  5566

};

对象属性有两种寻址方式:

实例

name=person.lastname;

name=person["lastname"];

但是,我们通常认为 "JavaScript 对象是键值对的容器"。

键值对通常写法为 name : value (键与值以冒号分割)。

键值对在 JavaScript 对象通常称为 对象属性。

局部 JavaScript 变量

在 JavaScript 函数内部声明的变量(使用 var)是局部变量,所以只能在函数内部访问它。(该变量的作用域是局部的)。

您可以在不同的函数中使用名称相同的局部变量,因为只有声明过该变量的函数才能识别出该变量。

只要函数运行完毕,本地变量就会被删除。

全局 JavaScript 变量

在函数外声明的变量是全局变量,网页上的所有脚本和函数都能访问它。

JavaScript 变量的生存期

JavaScript 变量的生命期从它们被声明的时间开始。

局部变量会在函数运行以后被删除。

全局变量会在页面关闭后被删除。

字符串属性

属性 描述
constructor 返回创建字符串属性的函数
length 返回字符串的长度
prototype 允许您向对象添加属性和方法

字符串方法

更多方法实例可以参见:JavaScript String 对象。

方法 描述
charAt() 返回指定索引位置的字符
charCodeAt() 返回指定索引位置字符的 Unicode 值
concat() 连接两个或多个字符串,返回连接后的字符串
fromCharCode() 将 Unicode 转换为字符串
indexOf() 返回字符串中检索指定字符第一次出现的位置
lastIndexOf() 返回字符串中检索指定字符最后一次出现的位置
localeCompare() 用本地特定的顺序来比较两个字符串
match() 找到一个或多个正则表达式的匹配
replace() 替换与正则表达式匹配的子串
search() 检索与正则表达式相匹配的值
slice() 提取字符串的片断,并在新的字符串中返回被提取的部分
split() 把字符串分割为子字符串数组
substr() 从起始索引号提取字符串中指定数目的字符
substring() 提取字符串中两个指定的索引号之间的字符
toLocaleLowerCase() 根据主机的语言环境把字符串转换为小写,只有几种语言(如土耳其语)具有地方特有的大小写映射
toLocaleUpperCase() 根据主机的语言环境把字符串转换为大写,只有几种语言(如土耳其语)具有地方特有的大小写映射
toLowerCase() 把字符串转换为小写
toString() 返回字符串对象值
toUpperCase() 把字符串转换为大写
trim() 移除字符串首尾空白
valueOf() 返回某个字符串对象的原始值

typeof 操作符

你可以使用 typeof 操作符来检测变量的数据类型。

null

在 JavaScript 中 null 表示 "什么都没有"。

null是一个只有一个值的特殊类型。表示一个空对象引用。

js学习10---js基础JavaScript 数据类型JavaScript 错误 - throw、try 和 catchJavaScript 严格模式(use strict)JavaScript this 关键字JavaScript let 和 constavaScript JSON
用 typeof 检测 null 返回是object。

你可以设置为 null 来清空对象:

undefined

在 JavaScript 中, undefined 是一个没有设置值的变量。

typeof 一个没有值的变量会返回 undefined。

undefined 和 null 的区别

实例

null 和 undefined 的值相等,但类型不等:

typeof undefined             // undefined

typeof null                  // object

null === undefined           // false

null == undefined            // true

JavaScript 数据类型

在 JavaScript 中有 5 种不同的数据类型:

  • string
  • number
  • boolean
  • object
  • function

2 个不包含任何值的数据类型:

  • null
  • undefined
  • NaN 的数据类型是 number
  • 数组(Array)的数据类型是 object
  • 日期(Date)的数据类型为 object
  • null 的数据类型是 object
  • 未定义变量的数据类型为 undefined

JavaScript 错误 - throw、try 和 catch

try 语句测试代码块的错误。

catch 语句处理错误。

throw 语句创建自定义错误。

 JavaScript 错误

当 JavaScript 引擎执行 JavaScript 代码时,会发生各种错误。

可能是语法错误,通常是程序员造成的编码错误或错别字。

可能是拼写错误或语言中缺少的功能(可能由于浏览器差异)。

可能是由于来自服务器或用户的错误输出而导致的错误。

当然,也可能是由于许多其他不可预知的因素。

JavaScript 抛出(throw)错误

当错误发生时,当事情出问题时,JavaScript 引擎通常会停止,并生成一个错误消息。

描述这种情况的技术术语是:JavaScript 将抛出一个错误。

JavaScript try 和 catch

try 语句允许我们定义在执行时进行错误测试的代码块。

catch 语句允许我们定义当 try 代码块发生错误时,所执行的代码块。

JavaScript 语句 try 和 catch 是成对出现的。

语法

try { //在这里运行代码 } catch(err) { //在这里处理错误 }

JavaScript 调试工具

在程序代码中寻找错误叫做代码调试。

调试很难,但幸运的是,很多浏览器都内置了调试工具。

内置的调试工具可以开始或关闭,严重的错误信息会发送给用户。

有了调试工具,我们就可以设置断点 (代码停止执行的位置), 且可以在代码执行时检测变量。

浏览器启用调试工具一般是按下 F12 键,并在调试菜单中选择 "Console" 。

JavaScript 严格模式(use strict)

JavaScript 严格模式(strict mode)即在严格的条件下运行。

使用 "use strict" 指令

"use strict" 指令在 JavaScript 1.8.5 (ECMAScript5) 中新增。

它不是一条语句,但是是一个字面量表达式,在 JavaScript 旧版本中会被忽略。

"use strict" 的目的是指定代码在严格条件下执行。

严格模式下你不能使用未声明的变量。

js学习10---js基础JavaScript 数据类型JavaScript 错误 - throw、try 和 catchJavaScript 严格模式(use strict)JavaScript this 关键字JavaScript let 和 constavaScript JSON

支持严格模式的浏览器:

Internet Explorer 10 +、 Firefox 4+ Chrome 13+、 Safari 5.1+、 Opera 12+。

严格模式声明

严格模式通过在脚本或函数的头部添加 "use strict"; 表达式来声明。

实例中我们可以在浏览器按下 F12 (或点击"工具>更多工具>开发者工具") 开启调试模式,查看报错信息。

JavaScript 标准

所有的现代浏览器完全支持 ECMAScript 3(ES3,JavaScript 的第三版,从 1999 年开始)。

ECMAScript 4(ES4)未通过。

ECMAScript 5(ES5,2009 年发布),是 JavaScript 最新的官方版本。

随着时间的推移,我们开始看到,所有的现代浏览器已经完全支持 ES5。

JavaScript 保留关键字

Javascript 的保留关键字不可以用作变量、标签或者函数名。有些保留关键字是作为 Javascript 以后扩展使用。

abstract arguments boolean break byte
case catch char class* const
continue debugger default delete do
double else enum* eval export*
extends* false final finally float
for function goto if implements
import* in instanceof int interface
let long native new null
package private protected public return
short static super* switch synchronized
this throw throws transient true
try typeof var void volatile
while with yield

* 标记的关键字是 ECMAScript5 中新添加的。

JavaScript this 关键字

面向对象语言中 this 表示当前对象的一个引用。

但在 JavaScript 中 this 不是固定不变的,它会随着执行环境的改变而改变。

  • 在方法中,this 表示该方法所属的对象。
  • 如果单独使用,this 表示全局对象。
  • 在函数中,this 表示全局对象。
  • 在函数中,在严格模式下,this 是未定义的(undefined)。
  • 在事件中,this 表示接收事件的元素。
  • 类似 call() 和 apply() 方法可以将 this 引用到任何对象。
  • JavaScript let 和 const

    ECMAScript 2015(ECMAScript 6)

    ES2015(ES6) 新增加了两个重要的 JavaScript 关键字: let 和 const。

    let 声明的变量只在 let 命令所在的代码块内有效。

    const 声明一个只读的常量,一旦声明,常量的值就不能改变。

    在 ES6 之前,JavaScript 只有两种作用域: 全局变量 与 函数内的局部变量。

  • JavaScript 块级作用域(Block Scope)

    使用 var 关键字声明的变量不具备块级作用域的特性,它在 {} 外依然能被访问到。

    { 
        var x = 2; 
    }
    // 这里可以使用 x 变量      

    在 ES6 之前,是没有块级作用域的概念的。

    ES6 可以使用 let 关键字来实现块级作用域。

    let 声明的变量只在 let 命令所在的代码块 {} 内有效,在 {} 之外不能访问。

    { 
        let x = 2;
    }
    // 这里不能使用 x 变量      
  • 浏览器支持

    Internet Explorer 11 及更早版本的浏览器不支持 let 关键字。

    下表列出了各个浏览器支持 let 关键字的最低版本号。

    Chrome 49 IE / Edge 12 Firefox 44 Safari 11 Opera 36
    Mar, 2016 Jul, 2015 Jan, 2015 Sep, 2017 Mar, 2016
  • 并非真正的常量

    const 的本质: const 定义的变量并非常量,并非不可变,它定义了一个常量引用一个值。使用 const 定义的对象或者数组,其实是可变的。下面的代码并不会报错:

    实例

    // 创建常量对象
  • const car = {type:"Fiat", model:"500", color:"white"};
  • // 修改属性:
  • car.color = "red"; // 添加属性 car.owner = "Johnson";
  • 浏览器支持

    Internet Explorer 10 及更早版本的浏览器不支持 const 关键字。

    下表列出了各个浏览器支持 const 关键字的最低版本号。

    Chrome 49 IE / Edge 11 Firefox 36 Safari 10 Opera 36
    Mar, 2016 Oct, 2013 Feb, 2015 Sep, 2016 Mar, 201
  • avaScript JSON

    JSON 是用于存储和传输数据的格式。

    JSON 通常用于服务端向网页传递数据 。

    什么是 JSON?

  • JSON 英文全称 JavaScript Object Notation
  • JSON 是一种轻量级的数据交换格式。
  • JSON是独立的语言 *
  • JSON 易于理解。
  • js学习10---js基础JavaScript 数据类型JavaScript 错误 - throw、try 和 catchJavaScript 严格模式(use strict)JavaScript this 关键字JavaScript let 和 constavaScript JSON

    * JSON 使用 JavaScript 语法,但是 JSON 格式仅仅是一个文本。

    文本可以被任何编程语言读取及作为数据格式传递。

  • JSON 对象

    JSON 对象保存在大括号内。

    就像在 JavaScript 中, 对象可以保存多个 键/值 对:

    {"name":"Runoob", "url":"www.acrunoob.com"}

    JSON 数组

    JSON 数组保存在中括号内。

    就像在 JavaScript 中, 数组可以包含对象:

    "sites":[ {"name":"Runoob", "url":"www.runoob.com"}, {"name":"Google", "url":"www.google.com"}, {"name":"Taobao", "url":"www.taobao.com"} ]

  • 相关函数

    函数 描述
    JSON.parse() 用于将一个 JSON 字符串转换为 JavaScript 对象。
    JSON.stringify() 用于将 JavaScript 值转换为 JSON 字符串。