您的位置:首页 > Web前端 > JavaScript

JavaScript(一)js 简介 基础语法 数据类型 变量

2019-05-06 13:45 573 查看

什么是 JavaScript

JavaScript 是一种由 Netscape 的 LiveScript 发展⽽而来的原型化继承的基于对象的动态类型的区分⼤小写的 客户端脚本语言,主要⽬目的是为了了解决服务器端语⾔言,⽐比如 Perl,遗留留的速度问题,为客户提供更更流畅的浏 览效果。
当时服务端需要对数据进行验证,由于⽹网络速度相当缓慢,只有 28.8kbps,验证步骤浪费的时间太多。于是 Netscape 的浏览器器 Navigator 加⼊了 JavaScript,提供了了数据验证的基本功能。 JavaScript,⼀一种直译式脚本语⾔言,是⼀一种动态类型、弱类型、基于原型的语⾔言,内置⽀支持类型。它的解释 器器被称为 JavaScript 引擎,为浏览器器的⼀一部分,⼴广泛⽤用于客户端的脚本语⾔言,最早是在 HTML ⽹页上使用, ⽤用来给HTML⽹页增加动态功能。然⽽现在 JavaScript 也可被⽤用于⽹服务器,如 Node.js。

JavaScript发展历史

在 1995 年年由 Netscape (⽹网景)公司推出 LiveScript。在此之前,没有所谓的前端技术。所有的处理理都需 要由服务器器端进⾏行行操作。当时的⽬目的是同时在客户端和服务器器端使⽤用。 由 Netscape(⽹网景)公司联合 SUN 公司完善 LiveScrip。此时, Netscape(⽹网景)公司将 LiveScript 更更名为 JavaScript。⽬目的是利利⽤用 Java 语⾔言的流⾏行行。 微软在推出 IE3.0 时,使⽤用了了 JavaScript 的克隆隆版本,Jscript。 在 1997 年年,JavaScript 1.1 由欧洲计算机制造商协会定义。此举,只为 JavaScript 语⾔言定制统⼀一的语 ⾔言版本。该全新版本的推出,更更名为 ECMAScript。该版本由 Netscape、Sun、微软等共同定义

JavaScript 组成部分

 ECMAScript是一种脚本语言的标准,ECMA-262标准。 该标准不仅限于JavaScript语⾔言使⽤,例如ActionScript语⾔言中的标准也为     ECMA-262标准。 ECMAScript 描述了了以下内容:语法、类型、语句、关键字、保留字、运算符和对象等。

BOM:全称: Browser Object Model,译为浏览器对象模型。

DOM:全称: Document Object Model,译为文档对象模型。

ECMAScript 介绍 

什么是 ECMAScript

ECMAScript 是一种由 Ecma 国际(前身为欧洲计算机制造商协会)通过 ECMA-262 标准化的脚本程序设计
语⾔。这种语⾔言在万维⽹网上应⽤用⼴广泛,它往往被称为 JavaScript 或 JScript,但实际上后两者是 ECMA-262 标准的实现和扩展。

ECMAScript 发展历史

1995 年年 12 ⽉月 SUN 公司与 Netscape 公司⼀一起引⼊入了了 JavaScript。 1996 年年 03 ⽉月⽹网景通讯公司发表了了⽀支持 JavaScript 的⽹网景导航者2.0。 1996 年年 08 ⽉月由于 JavaScript 作为⽹网⻚页的客户⾯面脚本语⾔言⾮非常成功,微软将之引⼊入了了Internet Explorer 3.0,取名 JScript。 1996 年年 11 ⽉月⽹网景通讯公司将 JavaScript 提交给欧洲计算机制造商协会进⾏行行标准化。 1997 年年 06 ⽉月 ECMA-262 的第⼀一个版本被欧洲计算机制造商协会采纳。并将 ECMA-262 标准取名为 ECMAScript

如何使用 JavaScript

可以在HTML⻚页⾯面中的任何位置,使⽤用 <script></script> 标签来插⼊入 JavaScript。

值得注意的是: 在 HTML ⻚面中的不同位置,插入 JavaScript。执⾏行地效果各不相同(执行顺序是⾃上 而下)。

<script> 标签的属性说明:

type: text/javascript,指定使⽤用的脚本语⾔。

language :JavaScript,也是指定使⽤用的脚本语⾔言。弃⽤! 

src: 载⼊入外部JavaScript脚本代码(路路径可以是绝对路路径和相对路路径)。

值得注意的是: 如果编写 DOM 代码时,JavaScript 插⼊入在 HTML ⻚页⾯面的位置是有区别的。

基础语法

JavaScript 是⼀种区分⼤小写的语言。这意味着 JavaScript 的关键字、变量名、函数名、以及任何其他的标 识符必须使⽤用⼀致的⼤小写形式。⽐如 atguigu、Atguigu 或 ATGUIGU 是不同的变量名。

空格和换⾏

JavaScript 会忽略出现在代码中的空格、制表符和换⾏符。
由于可以⾃自由地在代码中使⽤用空格、制表符和换⾏符,所以采⽤整齐、⼀致的缩进来形成统一的编码⻛风格, 从而提高代码的可读性显得尤为重要。
4000 JavaScript 还可以识别⽔平制表符、垂直制表符、换页符等,JavaScript 将以下字符识别为行结束符:换⾏符、回⻋符、行分隔符、段分隔符等。回⻋符加换⾏符在一起被解析为⼀个单行结束符。

可选的分号

JavaScript 的语句句一般是以⼀个分号作为结尾。当然,JavaScript 也允许忽略略这个分号。如果省略分号,则由解释器确定语句的结尾,不推荐省略分号;

注释

在编写 JavaScript 代码时,经常利利⽤用注释为代码添加说明。注释的内容会被 JavaScript 解释器器/引擎忽略略, JavaScript ⽀支持两种格式的注释:

  • 单行注释
[code]<script>
// 单行注释
</script>
  • 多行注释
[code]<script>
/*
     我是
多行注释
    */
</script>

语句

JavaScript代码将多⾏行行组合成⼀一个代码块,每个代码块⼀一般是以左花括号({)开始,以右花括号(})结束。 

关键字

JavaScript 定义了了一组具有特定⽤用途的关键字,这些关键字可⽤用于表示语句句的开始或结束、或者执⾏行行特定操 作等。也就是说,定义变量量名或、函数名或对象名时不不能使⽤用这些名称。


保留字

JavaScript 除了了定义了⼀组关键字,还定义了⼀组同样不不能作为变量名、函数名或对象名的保留字。保留字 可能在将来被作为新的关键字出现的。

变量
 

什么是变量

变量是存储数据信息的容器。
变量被认为是有名字的容器。在代码中,使⽤变量名为值命名,需要遵守一定的规则。 

值得注意的是: 在 JavaScript 代码中,必须先声明一个变量,这个变量才能被使用。 JavaScript 中的变量是弱类型的,也称之为松散类型的。所谓弱类型/松散类型就是可以用来保存任何类型的数据。


变量的声明

在 JavaScript 代码中,使⽤变量前应当先声明。变量是使⽤关键字 var 声明的。
只声明未初始化,变量的值⾃动取值为 undefined

  • ⼀⾏代码只声明一个变量:    var libufan;// 值为undefined
  • ⼀行代码声明多个变量:var li,ha, liu;// 值为undefined

将变量量的声明和初始化合写在⼀一起

  • ⼀行代码只声明一个变量量并赋值:
[code]var libufan="tiancai";
  • ⼀行代码声明多个变量量并赋值:
[code]var x=1,y=2,z=3;

值得注意的是: 等号(=)是赋值运算符。

命名规则

变量的命名需要遵守⼀定的规则的,具体规则如下:

  • 必须以字母、下划线(_)、美元符号($)开始。 不能以数字开头。
  • 不能使⽤关键字和保留字作为名称。
  • 由于 JavaScript 是区分⼤小写的,⼤写字母与⼩写字母并不不冲突。 名称最好有明确的含义。
  • 可以采⽤用“下划线命名法”、“⼩驼峰命名法”或“⼤驼峰命名法” 之一,在开发团队内进⾏协调统⼀。

重复的声明

使⽤用 var 语句句重复声明变量量是合法且无害的。但是如果重复声明并初始化的,这就表示重复声明并初始化。由于 JavaScript 变量只能存储⼀个数据,之前存储的数据会被覆盖。

 

直接读取⼀一个没有声明的变量量的值,JavaScript会报错。

为⼀一个没有声明的变量量初始化,是合法的,但并不不推荐这样使⽤用。

变量的使用

对声明的变量既可以读取操作,也可以赋值操作。
 

常量

什么是常量

常量量就是一个只读(read-only)的变量。
常量与变量类似,同样用于存储数据信息。只是常量的数据⼀旦被定义,便不能被修改。 

值得注意的是:
常量名习惯使⽤全大写形式。 ECMAScript 5新增了声明常量使用的关键字 const。 如果省略const关键字,JavaScript会认为是⼀个变量。

常量量的声明

在 ECMAScript 5 版本前,没有定义常量的语法。使⽤ var 关键字定义变量,人为规定值不不改变,也 可以是不严格的常量。

在 ECMAScript 5 版本后,提供了了关键字 const 定义常量量。

  • [code]const leg=100;

值得注意的是: 常量量的声明,必须进⾏行行初始化操作,否则会报错误。
const leg; // const variable without initializer is not allowed

常量的使⽤

常量一旦被声明并初始化,值并不能被改变。常量的使用只能进行读取操作
 

数据类型

在 JavaScript 代码中,能够表示并操作值的类型称之为数据类型。
数据类型可分为可变类型和不可变类型。可变类型的值是可修改的,对象和数据就属于可变类型;不可变类型的值是不可修改的,数字、布尔值、null 和 undefined 都属于不可变类型。 

字符串可以看成由字符组成的数组,可能被误认为是可变的。但在 JavaScript 中,字符串的值是不可变的。

原始类型

原始类型,又称为原始值,是直接代表 JavaScript 语⾔实现的最底层的数据。

原始类型分别为 boolean 类型、number 类型和 string 类型三种。当然,有些料将undefined 和 null 也归为 原始类型(这⾥里表示为特殊类型)。
声明变量并初始化值为原始类型,⼀般称之为字⾯量方式定义变量,也可以称之为直接量方式定义变量

boolean

布尔(boolean)类型是指真或假、开或关、是或否。这个类型只有两个值:true 和 false。

值得注意的是:

  • 由于 JavaScript 是区分⼤大⼩小写的,布尔类型的 true 和 false 全部是⼩小写。
  • JavaScript 也可以将其他类型的数据,⾃动转换为布尔类型。


number 类型
number 类型是指数字,JavaScript 不区分整数类型和浮点类型。

整数类型: 包括负整数、0和正整数等。

浮点类型: 表示小数,JavaScript 中的所有数字均⽤用浮点类型表示。

值得注意的是: 八进制或十六进制的数值最终会被转换成十进制数值

浮点类型
浮点类型,就是指该数值包含整数部分、⼩小数点和⼩小数部分。
 

  • var floatNum1 = 0.1;
  • var floatNum2 = .1;// 有效,但不推荐

值得注意的是:

JavaScript允许⼩小数点前可以没有整数,但不不推荐这种写法。 保存浮点类型需要的空间是保存整数类型的两倍。 如果小数点后⾯面没有任何数字,那这个数值作为整数类型保存。

var floatNum3 = 1.;// ⼩小数点后⾯面没有数字 — 解析为 1

var floatNum4 = 10.0;// 整数 —— 解析为 10
 

四舍五⼊误差

整数有⽆无数个,但JavaScript通过浮点类型只能表示有限的个数(确切地说是 18 437 736 874 454 810 627 个)。也就是说,当在JavaScript中使⽤用浮点类型时,常常只是真实值的⼀个近似表示。如下述代码:
 

var x = .3 - .2;

var y = .2 - .1;

x == y;// 值为false,表示两值不不相等

x == .1;// 值为false,.3-.2 不不等于 .1

y = .1;// 值为true,.2-.1 等于 .1

  • 值得注意的是: 建议使⽤用⼤大整数表示⾦金金额。例例如使⽤用分作为单位,⽽而不不是使⽤用元作为单位

NaN

NaN(Not a Number),即非数值,是一个特殊的数值。 

特点: 任何涉及NaN的操作都会返回NaN。

NaN与任何值都不不相等,包括NaN本身。

值得注意的是: 针对上述特点,JavaScript提供了了isNaN( )函数。该函数用于判断计算结果是否不为数值

console.log(isNaN(10));// 输出false(10是⼀个数值)

console.log(isNaN("10"));// 输出false(可以被转换成数值 10)

console.log(isNaN("blue"));// 输出true(不能转换成数值)

console.log(isNaN(true));// 输出false(可以被转换成数值 1)
 

string 类型
string 类型⽤用于表示由零或多个 16 位 Unicode 字符组成的字符序列列,被称之为字符串串。字符串串可以由双引号 (")或单引号(')表示。


var firstString = "Nicholas";

var secondString = 'Zakas';

string类型包含⼀些特殊的转义字符,⽤用于表示非打印字符。

typeof 运算符
由于 JavaScript 是弱类型/松散类型的,因此需要有⼀种手段来检测给定变量的数据类型。

typeof 运算符就是负责提供这⽅面信息,如下述代码:
 

var message = "this is message";

console.log(typeof message);// 输出 string

console.log(typeof(message));// 输出 string

  • 值得注意的是: typeof 运算符加上圆括号,会像是函数,⽽不是运算符,并不不建议这种写法。

包装类型
在 JavaScript 中,对应原始类型提供了了包装类型。通过包装类型可以创建原始类型的对象。
由于 JavaScript 是区分⼤大⼩小写的,从写法上来说,原始类型是全部小写,包装类型则是全部大写。
一般不建议使用包装型定义对应的数据类型,但包装类型提供了操作相应值的⽅方法。

Boolean 类型

var bool = new Boolean(true);

Boolean 类型是原始类型 boolean 类型对应的包装类型。
boolean 类型与 Bollean 类型的区别:

  • typeof 运算符对原始类型返回 "boolean",而对包装类型为 "object"。
  • instanceof 运算符测试 Boolean 类型返回 true,而测试 boolean 类型返回 false。 

值得注意的是: 不不建议使⽤用 Boolean 类型

Number 类型
Number 类型是原始类型 number 类型对应的包装类型。

var num = new Number(10);

number 类型与 Number 类型的区别:

  • typeof 运算符对原始类型返回 "number",而对包装类型为 "object"。
  • instanceof 运算符测试 Number 类型返回 true,而测试 number 类型返回 false。

值得注意的是: 不不建议使⽤用 Number 类型。

String 类型

String 类型是原始类型 string 类型对应的包装类型。
var str = new String("hello world");

string 类型与 String 类型的区别:

  • typeof 运算符对原始类型返回 "string",而对包装类型为 "object"。
  • instanceof 运算符测试 String 类型返回 true,而测试 string 类型返回 false。

值得注意的是: 不不建议使⽤用 String 类型。
instanceof 运算符
instanceof 运算符的左操作数是⼀一个包装类型的变量量,右操作数是对应的数据类型。如果左侧的变量量是右侧 的数据类型,则表达式返回 true;否则返回 false。例例如下述代码:
 

var str = "this is message";

str instanceof String;// 

str instanceof Object;// 计算结果为 true, 所有包装类型都是Object的实例例

str instanceof Number;// 计算结果为 false

[code]const str2= new String("ddd");
console.log(str2 instanceof String);// true str2 是 String

值得注意的是: 所有对象都是 Object 类型的实例例对象,通过 instanceof 运算符判断⼀一个对象是否为具体 数据类型,也包含"⽗父类"

特殊类型
undefined

JavaScript 中有两个表示空的数据类型,undefined 和 null,其中⽐比较有用的是 undefined。

undefined 类型 只有一个值,就是 undefined。

下列列情况会返回undefined:

  • 访问未修改的变量 undefined
  • 没有定义 return 表达式的函数隐式返回 undefined
  • return 表达式没有显式的返回任何内容
  • 访问不存在的属性
  • 任何被设置为 undefined 值的变量

null

null 类型是 JavaScript 中的⼀个特殊类型,用于表示一个不再指向任何内存空间地址的变量。
null 值多⽤用于释放 JavaScript 中的资源(变量量、数组和函数等)。 

值得注意的是: 使⽤用 typeof 运算符计算 null 的话,返回的是 object。

var atguigu = null; console.log(atguigu);// 输出 null
 

undefined 与 null
共同点: 都是原始类型,保存在栈中。

不同点:

undefined: 表示变量声明但未被赋值,是所有未赋值变量的默认值。一般很少主动使⽤。

null: 表示一个没有指向任何内存地址的变量,将来可能指向某个具体内存地址。一般用于主动释放资源。
 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐