javascript遵循 标准 javascript最新标准

您所在的位置:网站首页 Java的基本语法遵循的标准 javascript遵循 标准 javascript最新标准

javascript遵循 标准 javascript最新标准

2024-07-02 02:50| 来源: 网络整理| 查看: 265

JavaScript(JS)介绍

JavaScript ( JS ) 是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。虽然它是作为开发Web 页面的脚本语言而出名的,但是它也被用到了很多非浏览器环境中,例如 Node.js、 Apache CouchDB 和 Adobe Acrobat。JavaScript 是一种基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式和声明式(如函数式编程)风格。

javascript遵循 标准 javascript最新标准_数组

JavaScript 的标准是 ECMAScript 。截至 2012 年,所有的现代浏览器都完整的支持 ECMAScript 5.1,旧版本的浏览器至少支持 ECMAScript 3 标准。2015年6月17日,ECMA国际组织发布了 ECMAScript 的第六版,该版本正式名称为 ECMAScript 2015,但通常被称为 ECMAScript 6 或者 ES6。自此,ECMAScript 每年发布一次新标准。本文档目前覆盖了最新 ECMAScript 的草案,也就是 ECMAScript2020。

JavaScript引入方式

script标签内写js代码

// js代码

引入外部js文件

JavaScript注释

就像 HTML 和 CSS,JavaScript 代码中也可以添加注释,浏览器会忽略它们,注释只是为你的同事(还有你,如果半年后再看自己写的代码你会说,这是什么垃圾玩意。)提供关于代码如何工作的指引。注释非常有用,而且应该经常使用,尤其在大型应用中。注释分为两类:

在双斜杠后添加单行注释,比如:// 我是一条注释在 /* 和 */ 之间添加多行注释,比如:/* 我也是 一条注释 */JavaScript语言基础声明变量

要想使用变量,你需要做的第一步就是创建它 -- 更准确的说,是声明一个变量。声明一个变量的语法是在 var 或 let 关键字之后加上这个变量的名字:

javascript遵循 标准 javascript最新标准_javascript遵循 标准_02

let name = 'xie'; var age = 18;

声明一个变量可以不立刻赋值,如果不初始化那么变量的值为undefined。

提示 : 在JavaScript中,所有代码指令都会以分号结尾 ; — 如果忘记加分号,你的单行代码可能执行正常,但是在多行代码在一起的时候就可能出错。所以,最好是养成主动以分号作为代码结尾的习惯。

var 与 let 的区别

首先,如果你编写一个声明并初始化变量的多行 JavaScript 程序,你可以在初始化一个变量之后用 var 声明它,它仍然可以工作。 例如:

myName = 'Chris'; function logName() { console.log(myName); } logName(); var myName;

这是由于变量的提升,更多细节请阅读变量提升。

但提升操作不再适用于 let 。如果将上面例子中的 var 替换成 let 将不起作用并引起一个错误。 这是一件好事——因为初始化后再声明一个变量会使代码变得混乱和难以理解。

其次,当你使用 var 时,可以根据需要多次声明相同名称的变量,但是 let 不能。let声明的变量修改值通过变量名 = 新值修改。

变量命名规则不要以下划线、数字开头使用小写驼峰命名法不要使用JavaScript保留字段,如var、function等。变量名要见名知意数据类型Number

你可以在变量中存储数字,不论这些数字是像30(也叫整数)这样,或者像2.456这样的小数(也叫做浮点数)。与其他编程语言不同,在 JavaScript 中你不需要声明一个变量的类型。当你给一个变量数字赋值时,不需要用引号括起来。

let age = 18; // 声明常量,无法修改 const pi = 3.14;

PS: NaN表示不是一个数字,但它是number类型。

常见的类型转换方法:

parseInt("123"); // 返回123 parseInt("ABC"); // 返回NaN,NaN属性是代表非数字值的特殊值。该属性用于指示某个值不是数字。 parseFloat("123.456"); // 返回123.456String

字符串是文本的一部分。当你给一个变量赋值为字符串时,你需要用单引号或者双引号把值给包起来,否则JavaScript将会把这个字符串值理解成别的变量名。

let word = 'Long may the sunshine.';length

获得字符串长度,length属性。

let name = 'xiezhongjing'; console.log(name.length);indexOf

在字符串中查找子字符串所在的索引。

let name = 'xiezhongjing'; console.log(name.indexOf('j'));slice

根据指定索引范围切割字符串。slice有两个参数,第一个为起始位置,第二个为结束位置(不包含),如果不传则是到原字符串结尾 。

let name = 'xiezhongjing'; console.log(name.slice(0,3));toLowerCase 与 toUpperCase

字符串方法toLowerCase()和toUpperCase()字符串并将所有字符分别转换为小写或大写。

let name = 'A b C d'; name.toLowerCase(); name.toUpperCase();replace

replace()方法将字符串中的一个子字符串替换为另一个子字符串。

let name = 'xie'; name.replace('x','s');split

以给定的字符分割字符串,返回数组。

let name = 'xie|lin'; name.split('|'); // ['xie','lin']Array

数组由方括号构成,其中包含用逗号分隔的元素列表。

let student = ['xie','lin','wang']; // 索引访问数组 console.log(student[0]); // xie // 索引修改数组值 student[0] = 'sie'; console.log(student); // ['sie','lin','wang']length

length 属性可以获取数组的长度(数组中有多少项元素),这与查找字符串的长度(以字符为单位)完全相同 。

let a = [11,'22',33]; console.log(a.length); // 3join

通过传递的字符串参数拼接数组中的字符串。

let a = ['11','22','33']; a = a.join(','); console.log(a) // 11,22,33;push pop unshift shift

数组的添加和删除方法。

push()可以添加一个或多个元素到数组的末尾。

let myarr = [11,22,33]; myarr.push(44); // myarr.push(44,55);

pop()删除数组的最后一个元素。

let myarr = [11,22,33]; myarr.pop();

unshift在头部插入元素,shift移除头部元素。

let myarr = [11,22,33]; myarr.unshift(44); myarr.shift()forEach

forEach方法功能强大,它能够遍历数组处理数组中的每个元素。forEach方法第一个参数为函数对象,此函数可以有三个参数,第一个为当前遍历的元素,index为当前索引,arr为元素所属数组对象。

let myarr = [11,22,33]; myarr.forEach((val,index,arr)=>{ console.log(val,index,arr) })map

map() 方法创建一个新数组,其结果是该数组中的每个元素是调用一次提供的函数后的返回值。

const array1 = [1, 4, 9, 16]; const map1 = array1.map(x => x * 2); console.log(map1); // [2, 8, 18, 32]

语法

let new_array = arr.map(function callback(currentValue[, index[, array]]) { // 处理元素生成新数组 }[, thisArg])

参数

callback

currentValue   数组中正在处理的当前元素。index 可选   数组中正在处理的当前元素的索引。array 可选   map 方法调用的数组。

thisArg 可选   执行 callback 函数时值被用作this。

Boolean

与python不同,javascript 布尔值为 true 和 false。

在条件判断语句中,""(空字符串)、0、null、undefined、NaN都是false。

运算符算数运算符

算术运算符是我们用来做和的基本运算符:

运算符

名称

作用

示例

+

加法

两个数相加。

6 + 9

-

减法

从左边减去右边的数。

20 - 15

*

乘法

两个数相乘。

3 * 7

/

除法

用右边的数除左边的数

10 / 5

%

求余(有时候也叫取模)

在你将左边的数分成同右边数字相同的若干整数部分后,返回剩下的余数

8 % 3 (返回 2,8除以3的倍数,余下2 。)

**

取底数的指数次方,即指数所指定的底数相乘。它在EcmaScript 2016 中首次引入

5 ** 5 (返回 3125,相当于 5 * 5 * 5 * 5 * 5 。)

自增和自减运算符

有时候,我们需要反复把一个变量加1或减1。 这可以方便地使用增量(++)和递减( -- )运算符来完成。

但是自增或自减运算符在变量两侧都能使用,并且它们的执行顺序不同。变量++会先赋值再进行自增1运算,而++变量会先进行自增运算再赋值!

let x = 10; let res1 = x++; let res2 = ++x; console.log(res1,res2) // 10 12赋值运算符

+=、-=、*=、/=

比较运算符

运算符

名称

作用

示例

===

严格等于

测试左右值是否相同

5 === 2 + 4

!==

严格不等于

测试左右值是否不相同

5 !== 2 + 3

>

大于

测试左值是否大于右值

10 > 20

5){ console.log("yes"); } else { console.log("no"); }if - else if - elselet a = 10; if (a > 5){ console.log("a > 5"); }else if (a < 5) { console.log("a < 5"); }else { console.log("a = 5"); }switchvar day = new Date().getDay(); switch (day) { case 0: console.log("Sunday"); break; case 1: console.log("Monday"); break; default: console.log("...") }

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

forfor (let i=0;i b ? a : b // 这里的三元运算顺序是先写判断条件a>b再写条件成立返回的值为a,条件不成立返回的值为b;三元运算可以嵌套使用; let num1=10,num2=20; let x=num1>num2 ?num1:(num2=="20")?num1:num2; // x:10函数// 普通函数定义 function f1() { console.log("Hello world!"); } // 带参数的函数 function f2(a, b) { console.log(arguments); // 内置的arguments对象,arguments相当于将出传入的参数全部包含 console.log(arguments.length); console.log(a, b); } // 带返回值的函数 function sum(a, b){ return a + b; } sum(1, 2); // 调用函数 // 匿名函数方式 1 const sum = function(a, b){ return a + b; } sum(1,2); // 匿名函数方式 2 const sum = (a,b) => a + b sum(1, 2); // 立即执行函数 书写立即执行的函数,首先先写两个括号()()这样防止书写混乱 (function(a, b){ return a + b; })(1, 2);内置对象自定义对象

JavaScript的对象(Object)本质上是键值对的集合(Hash结构),但是只能用字符串作为键。

let obj = {"name": "xie", "age": 18}; console.log(ibj.name); console.log(obj["age"]); // 遍历对象 for(let key in obj){ console.log(key, obj[key]); }Date

创建Date对象

// 方法1:不指定参数 let d1 = new Date(); console.log(d1.toLocaleString()); // 方法2:参数为日期字符串 let d2 = new Date("2004/3/20 11:12"); console.log(d2.toLocaleString()); let d3 = new Date("04/03/20 11:12"); console.log(d3.toLocaleString()); // 方法3:参数为毫秒数 let d3 = new Date(5000); console.log(d3.toLocaleString()); console.log(d3.toUTCString()); // 方法4:参数为年月日小时分钟秒毫秒 let d4 = new Date(2004,2,20,11,12,0,300); console.log(d4.toLocaleString()); // 毫秒并不直接显示

Date对象方法

var d = new Date(); //getDate() 获取日 //getDay () 获取星期 //getMonth () 获取月(0-11) //getFullYear () 获取完整年份 //getYear () 获取年 //getHours () 获取小时 //getMinutes () 获取分钟 //getSeconds () 获取秒 //getMilliseconds () 获取毫秒 //getTime () 返回自1970年1月1日(UTC)起经过的毫秒数JSONlet json_str = '{"name": "xie", "age": 18}'; let obj = {"name": "xie", "age": 18}; // JSON字符串转换成对象 var new_obj = JSON.parse(json_str); // 对象转换成JSON字符串 var new_json = JSON.stringify(obj);RegExp// 定义正则表达式两种方式 const reg1 = new RegExp("^[a-zA-Z][a-zA-Z0-9]{5,11}"); const reg2 = /^[a-zA-Z][a-zA-Z0-9]{5,9}$/; // 正则校验数据 reg1.test('xie1234'); reg2.test('xie1234'); /*第一个注意事项,正则表达式中不能有空格*/ // 全局匹配 const s1 = 'xie is cool'; s1.match(/s/); s1.match(/i/g); const reg2 = /^[a-zA-Z][a-zA-Z0-9]{5,9}$/g; reg2.test('xie123'); // true reg2.test('xie123'); // false reg2.lastIndex; /*第二个注意事项,全局匹配时有一个lastIndex属性*/ // 校验不传参数时 var reg2 = /^[a-zA-Z][a-zA-Z0-9]{5,9}$/; reg2.test(); reg2.test(undefined); var reg3 = /undefined/; reg3.test();



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3