【JavaScript基础#1】 -- 2019-08-17 00:11:51

原文: http://blog.gqylpy.com/gqy/237

"

?

目录

#. 概述

1. ECMAScript与JavaScript的关系

2. ECMAScript版本历史

3. 简单总结

#. 用法

1. 引入方式

2. 规范

3. 变量声明

#. 数据类型

1. 数值(Number)

2. 字符串(String)

3. 布尔值(Boolean)

4. null与undefined

5. 数组

6. 类型查询(typeof)

7. 运算符

#. 流程控制

1. if-else

2. if-else if-else

3. switch

4. for

5. while

6. 三元运算


#. 概述

1. ECMAScript与JavaScript的关系

1996年11月,JavaScript的创造者--Netscape公司,决定将JavaScript提交给国际标准化组织ECMA,希望这门语言能够成为国际标准。次年,ECMA发布262号标准文件(ECMA-262)的第一版,规定了浏览器脚本语言的标准,并将这种语言称为ECMAScript,这个版本就是1.0版。

该标准一开始就是针对JavaScript语言制定的,但是没有称其为JavaScript,有两个方面的原因。一是商标,JavaScript本身已被Netscape注册为商标。二是想体现这门语言的制定者是ECMA,而不是Netscape,这样有利于保证这门语言的开发性和中立性。

因此ECMAScript与JavaScript的关系是:前者是后者的规格,后者是前者的一种实现。

2. 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

注:ES6就是指ECMAScript 6.

3. 简单总结

尽管ECMAScript 是一个重要的标准,但它并不是 JavaScript 唯一的部分,当然也不是唯一被标准化的部分。实际上,一个完整的 JavaScript 实现是由以下 3 个不同部分组成的:

  1. 核心(ECMAScript)
  2. 文档对象模型(DOM)Document object model(整合js、css、html)
  3. 浏览器对象模型(BOM)Broswer object model(整合js和浏览器)

简单地说,ECMAScript描述了JavaScript语言本身的相关内容.

  • JavaScript是脚本语言.
  • JavaScript是一种轻量级的编程语言.
  • JavaScript是可插入HTML页面的编程代码.
  • JavaScript插入HTML页面后,可由所有的现代浏览器执行.
  • JavaScript很容易学习.

#. 用法

JavaScript中一切皆对象:字符串、数值、数组、函数...

JavaScript提供了多个内建对象,比如String、Date、Array...

JavaScript还允许自定义对象.

1. 引入方式

1. 将JS代码写在script标签内:

![在这里插入图片描述](http://blog.gqylpy.com/media/ai/2019-03/987a4c51-a85f-4b4f-bc48-2641abc609af.png)

script标签一般写在head标签内,但也可写在body内部.

2. 引入.JS文件:

![在这里插入图片描述](http://blog.gqylpy.com/media/ai/2019-03/5a6d3907-15bf-4be7-93fb-1ef1b877e341.png)

2. 规范

1. 注释(注释是代码之母)

![在这里插入图片描述](http://blog.gqylpy.com/media/ai/2019-03/18d5712c-1474-42c0-a803-517adaa47750.png)

2. 结束符

JavaScript中的语句要以分号 " ; " 为结束符:

![在这里插入图片描述](http://blog.gqylpy.com/media/ai/2019-03/65e1da36-f532-4ed3-a9cf-b69272cc8aa4.png)

3. 变量声明

  1. JavaScript的变量可以由下划线、数字、字母、$组成,但不能以数字开头.
  2. 声明变量使用 var 变量名 = 值; 的格式来声明:
  3. ![在这里插入图片描述](http://blog.gqylpy.com/media/ai/2019-03/89110058-6b01-42f7-9073-f7d7a2af7945.png)

注意:

  • JavaScript中的变量名是区分大小写的.
  • 推荐使用驼峰式命名规则.
  • 保留字不能用做变量名.

ES6新增了let命令,用于声明变量,其用法类似于var,但是所声明的变量只在let命令所在的代码块内有效.

for循环的计数器就很适合使用let命令:

![在这里插入图片描述](http://blog.gqylpy.com/media/ai/2019-03/d1a7bf13-dbfa-429f-9d14-385b2e586f79.png)

ES6新增了const命令,用来声明变量。一旦声明,其值便不可被更改:

![在这里插入图片描述](http://blog.gqylpy.com/media/ai/2019-03/1b548e65-b950-45c3-a1cc-d33570baea02.png)

保留字段

#. 数据类型

JavaScript拥有动态数据类型:

![在这里插入图片描述](http://blog.gqylpy.com/media/ai/2019-03/334bf48d-37aa-4610-8c8a-0daa437a7db6.png)

1. 数值(Number)

JavaScript不区分整数型和浮点型,就只有一种数字类型:

![在这里插入图片描述](http://blog.gqylpy.com/media/ai/2019-03/b9a27a39-2f71-448c-97bb-eb8402282502.png)

还有一种NaN,表示不是一个数字(Not a Number):

![在这里插入图片描述](http://blog.gqylpy.com/media/ai/2019-03/ea0641ab-be47-4b9a-be80-30f54857cf58.png)

NaN属性是代表非数字值的特殊值,该属性用于指示某个值不是数字.

2. 字符串(String)

![在这里插入图片描述](http://blog.gqylpy.com/media/ai/2019-03/4be909b4-2436-45ad-ada8-abea0621df92.png)

常用方法:

方法 功能  
.length 返回长度  
.trim() 移除两端空格,返回值是一个新值  
.trimLeft() 移除左边空格  
.trimRight() 移除右边空格  
.charAt(n) 返回索引值为n的字符  
.concat(s1, s2) 拼接,可拼接多个字符串  
.index(s, n) 获取s的索引,n为查找的起始位置(索引值)  
.substring(from, to) 切片,顾头不顾尾  
.slice(start, end) 切片,顾头不顾尾  
.toLowerCase() 小写  
.toUpperCase() 大写  
.split(s, n) 分割,以s为分隔符,n为分隔得到的列表的长度  

slice与substring的区别:

两者相同点:

  • 如果start等于end,返回空字符串.
  • 如果stop参数省略,则取到字符串末尾.
  • 如果某个参数超过了string的长度,那么这个会被替换为string的长度.

substirng()特点:

  • 如果 start > stop,start和stop将被交换.
  • 如果参数是负数或者不是数字,将替换为0.

silce()特点:

  • 如果 start > stop,不会交换两者.
  • 如果start或stop小于0,将倒数索引.

ES6中引入了模版字符串(template string),模版字符串是增强版的字符串,用反引号 " ` " 标示。

模版字符串可以当作普通的字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量:

![在这里插入图片描述](http://blog.gqylpy.com/media/ai/2019-03/30e4ee58-bcf9-4c68-9e56-ef66be2bf7b4.png)

注意:如果模版字符串中需要使用反引号,则要在其前面用反斜杠转译.

JSHint启用ES6语法支持: /* jshint esversion:6 */

3. 布尔值(Boolean)

布尔值有true、false之分;true为真,false为假。空字符串、0、null、undefined、NaN都为false.

4. null与undefined

  • null:表示值为空,一般在需要指定或清空一个变量时才会使用,如name = null;
  • undefined:变量的默认值,当声明一个变量但未初始化时,该变量的值便为undefined,还有函数的默认返回值也为此.

null表示变量的值为空,undefined表示只声明了变量,但还没有赋值.

5. 数组

使用单独的变量名来存储一系列的值:

![在这里插入图片描述](http://blog.gqylpy.com/media/ai/2019-03/c5b2d75d-9bf0-452a-8763-5a23e39c25d3.png)

常用方法
方法 说明
.length 返回数组的长度
.push() 在尾部追加元素
.pop() 弹出尾部的元素
.unshift() 在头部插入元素
.shift() 弹出头部的元素
.slice(start, end) 切片
.reverse() 反转
.join(‘_‘) 将数组元素以‘_‘为分隔符拼接成字符串
.concat(lst1, lst2, ...) 连接数组
.sort() 排序
.forEach(0 将数组的每个元素传递给回调函数
.splice(i, n, v)
从索引i开始删元素,删n个,删除的元素全替换为v

.map() 返回一个数组元素调用函数处理后的值的新数组

sort()方法详述:

如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。

若按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字:


  1. function sortNumber(a, b) {
  2. return a - b
  3. }
  4. var lst = [11, 100, 22, 55, 33, 44];
  5. lst.sort(sortNumber);

关于for遍历数组:


  1. var lst = [1, 2, 3, 4, 5, 6, 7, 8, 9];
  2. for (var i=0;i<=lst.length;i++) {
  3. console.log(i);
  4. }

ForEach的正确姿势:

![在这里插入图片描述](http://blog.gqylpy.com/media/ai/2019-03/4eb3e13e-706d-42bb-802b-393c9dfbd365.png)

map的正确姿势:

![在这里插入图片描述](http://blog.gqylpy.com/media/ai/2019-03/62b7bcd5-24db-4cc1-8830-3688a3d81323.png)

补充:

ES6新引入了一种原始数据类型(Symbol),表示独一无二的值。它是JavaScript语言中的第七种数据类型.

6. 类型查询(typeof)

typeof是一元运算符(就像++、--、!、- 等一元运算符),不是方法,也不是函数.

对变量或值调用typeof运算符将返回下列值之一:

  • undefined - 如果变量是 Undefined 类型的
  • boolean - 如果变量是 Boolean 类型的
  • number - 如果变量是 Number 类型的
  • string - 如果变量是 String 类型的
  • object - 如果变量是一种引用类型或 Null 类型的

![在这里插入图片描述](http://blog.gqylpy.com/media/ai/2019-03/dcd72fbd-f551-464a-b5ac-163fa1020256.png)

7. 运算符

1. 算数运算符:+  -  *  /  %  ++  --

2. 比较运算符:>  >=  <  <=  !=  ==  ===  !==

"=="只比较值,"==="会比较值和值的内存地址:

![在这里插入图片描述](http://blog.gqylpy.com/media/ai/2019-03/24b7c725-daf9-48c5-8241-3ad98a691621.png)

3. 逻辑运算符:&&  ||  !

4. 赋值运算符:=  +=  -=  *=  /=


#. 流程控制

1. if-else


  1. var n = 10;
  2. if (n > 5) {
  3. console.log(‘Yes‘);
  4. }else {
  5. console.log(‘No‘);
  6. }

2. if-else if-else


  1. var n = 10;
  2. if (n > 5) {
  3. console.log(‘a > 5‘);
  4. }else if (n < 5) {
  5. console.log(‘a < 5‘);
  6. }else {
  7. console.log(‘a = 5‘);
  8. }

3. switch


  1. var day = new Date().getDay();
  2. switch (day) {
  3. case 0:
  4. console.log(‘Sunday‘);
  5. break;
  6. case 1:
  7. console.log(‘Monday‘);
  8. break;
  9. default:
  10. console.log(‘...‘);
  11. }

switch中的case子句通常都会加break语句,否则程序会继续执行后续case中的语句.

4. for


  1. // 输出数字0-9
  2. for (var i=0;i<10;i++) {
  3. console.log(i);
  4. }

5. while


  1. // 输出数字0-9
  2. var n = 0;
  3. while (n < 10) {
  4. console.log(n);
  5. n++;
  6. }

6. 三元运算


  1. var a = 1;
  2. var b = 2;
  3. var c = a > b ? a : b;
  4. // 如果a>b则c=a,否则c=b


"

原文: http://blog.gqylpy.com/gqy/237

原文地址:https://www.cnblogs.com/bbb001/p/11366965.html

时间: 2024-10-05 02:02:51

【JavaScript基础#1】 -- 2019-08-17 00:11:51的相关文章

2019.08.17 Webpack4 bilibi

将这些依赖打包吗? es6转es5,将sass,less,转成css.文件优化:压缩代码体积,合并文件. 代码分割:公共模块的处理,路由懒加载功能.模块合并:功能模块分类 自动刷新 原文地址:https://www.cnblogs.com/Py-king/p/11368326.html

【纪中模拟2019.08.17】【JZOJ3503】粉刷

题目链接 题意: 给定一个$N\times M$的$01$矩阵,要求覆盖所有$1$的位置,求最小操作次数.一次操作,可以竖着覆盖连续的最多$C$列,或者横着覆盖连续的最多$R$行. $1\le\;N,\;M,\;R,\;C\le\;15$ 分析: 数据范围较小,考虑枚举. 但是不能盲目地同时枚举覆盖行.覆盖列的操作,因为这样的枚举是$O (2^{2N})$的,会$T$. 考虑枚举覆盖行的操作,枚得一种方案之后贪心地计算覆盖列的操作,完成. 总的时间复杂度$O (N^3\times 2^N)$.

JavaScript基础系列目录(2014.06.01~2014.06.08)

下列文章,转载请亲注明链接出处,谢谢! 链接地址: http://www.cnblogs.com/ttcc/tag/JavaScript%20%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86%20%E6%80%BB%E7%BB%93/ 1. Javascript基础---语法(待完成) 2. JavaScript基础---数据类型(待完成) 3. JavaScript基础---Array数组(待完成) 4. JavaScript基础---正则表达式(待完成) 5. Jav

javascript 基础1第11节

<html> <head> <title>javascript基础</title> </head> <body> 1.NaN isNaN()</br> <script type="text/javascript"> //数据类型转换失败 返回NaN类型 document.write("parseInt('a') : " ,parseInt('a'),"<b

JavaScript基础--内部类(九)

js的内部类javascript 中本身提供一些,可以直接使用的类,这种类就是内部类,主要有:ObjectArrayMathBooleanStringRegExpDateNumber 1.内部类分类从使用的方式看:分为动态类和静态类(1) 动态类 使用 var对象 = new 动态类() 对象属性|方法 var newdate = new Date(); //显示当前日期 window.alert(newdate.toLocaleString()); (2) 静态类 使用 类名.属性|方法比如:

JavaScript 基础知识精华版

CSS 把Html的显示部分抽离出来,一次定义多个页面的显示效果 在<head>里定义: <link rel="stylesheet" href="test1.css" type="text/css" /> <!-- 导入CSS文件 --> <style>  {<!-- 这里用Html注释会影响其他的内容,需要括起来 -->} h1{color:red;font-size:45} /*

Javascript 基础编程练习一

Javascript 基础互动编程,这篇练习结合了function 函数名(), onclick 时间, prompt输入窗口, window.open和confirm窗口, 任务 1.新窗口打开时弹出确认框,是否打开 提示: 使用 if 判断确认框是否点击了确定,如点击弹出输入对话框,否则没有任何操作. 2.通过输入对话框,确定打开的网址,默认为 http://www.baidu.com/ 3.打开的窗口要求,宽800像素,高600像素,无菜单栏.无工具栏. 1 <!DOCTYPE html>

JavaScript基础--小案例:在网页指定位置弹出错误信息(十二)

案例分析:点击按钮后,在网页上指定区域,提示错误信息!5秒后,错误信息提示自动消失! 1 <script languag="javascript" type="text/javascript"> 2 var clearId; 3 function test(){ 4 document.getElementById("showMsg").style.cssText="width:200px;height:50px;left:6

JavaScript基础细讲

JavaScript基础细讲 JavaScript语言的前身叫作Livescript.自从Sun公司推出著名的Java语言之后,Netscape公司引进了Sun公司有关Java的程序概念,将自己原有的Livescript 重新进行设计,并改名为JavaScript. JavaScript是一种基于对象和事件驱动并具有安全性能的脚本语言,有了JavaScript,可使网页变得生动.使用它的目的是与HTML超文本标识语言.Java 脚本语言一起实现在一个网页中链接多个对象,与网络客户交互作用,从而可