Java教程

JavaScript

本文主要是介绍JavaScript,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

JavaScript概述

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

  JavaScript在1995年由Netscape公司的Brendan Eich,在网景导航者浏览器上首次设计实现而成。因为Netscape与Sun合作,Netscape管理层希望它外观看起来像Java,因此取名为JavaScript。但实际上它的语法风格与Self及Scheme较为接近。

  JavaScript的标准是ECMAScript 。截至 2012 年,所有浏览器都完整的支持ECMAScript 5.1,旧版本的浏览器至少支持ECMAScript 3 标准。2015年6月17日,ECMA国际组织发布了ECMAScript的第六版,该版本正式名称为 ECMAScript 2015,但通常被称为ECMAScript 6 或者ES2015。

 

 

 

JavaScript引入方式

  JavaScript引入方式有两种:

    1.script标签内书写

<script>
  // 在这里写你的JS代码
</script>

 

    2.引入额外的js文件

<script src="myscript.js"></script>

 

JavaScript语言规范

  注释

// 这是单行注释

/*
这是
多行注释
*/

 

  结束符

    JavaScript中的语句要以分号(;)为结束符。

变量与常量

  在JS中声明变量需要使用关键字

    老版本 var(全部都是全局变量)
    新版本 let(在ES6以后的版本可用,可以声明局部变量)

  变量声明方式:

var name = 'tom'
let name = 'jerry'

 

  ES6新增const用来声明常量。一旦声明,其值就不能改变。

const pi=3.14  //修改会报错

 

基本数据类型

  js中可使用typeof来查看数据类型

typeof(name)
//结果'string'

  number类型

    数值类型,包括了整型和浮点型

var a = 12.34;
var b = 20;

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

parseInt('ABC')
//结果NaN,NaN属性是代表非数字值的特殊值。该属性用于指示某个值不是数字。

 

  string类型

    定义字符类型的方式:

      1.单引号

      2.双引号

      3.反引号(多行字符串)

var a = 'hello'
var b = "world"
var c = `python
js`

    常用方法:

方法 说明
.length 返回长度
.trim() 移除空白
.trimLeft() 移除左边的空白
.trimRight() 移除右边的空白
.charAt(n) 返回第n个字符
.concat(value, ...) 拼接
.indexOf(substring, start) 子序列位置
.substring(from, to) 根据索引获取子序列
.slice(start, end) 切片
.toLowerCase() 小写
.toUpperCase() 大写
.split(delimiter, limit) 分割

 

    其中字符串的拼接不推荐使用concat而是直接使用“+”号的方式

console.log(a+b)
//结果 helloworld

 

    反引号的形式还可用于格式化输出

var name1 = `tom`
var name2 = `jerry`
console.log(`${name1} and ${name2} are friend`)
//结果 tom and jerry are friend

 

boolean类型

  boolean类型即布尔值,true表示正确,false表示错误(都是全小写)。

  ""(空字符串)、0、null、undefined、NaN都是false。

 

 

 

null与undefined类型

  null表示值是空,一般在需要指定或清空一个变量时才会使用,如 name=null;

  undefined表示当声明一个变量但未初始化时,该变量的默认值是undefined。还有就是函数无明确的返回值时,返回的也是undefined。

  

var a = null // 定义了但是值为空
console.log(a)
//结果 null
var x // 未定义值
console.log(x)
//结果undefined

 

数组

  数组对象的作用是:使用单独的变量名来存储一系列的值。类似于Python中的列表。

var l1=[111,222,333]
console.log(l1[1])
//结果 222

  常用方法:

方法 说明
.length 数组的大小
.push(ele) 尾部追加元素
.pop() 获取尾部的元素
.unshift(ele) 头部插入元素
.shift() 头部移除元素
.slice(start, end) 切片
.reverse() 反转
.join(seq) 将数组元素连接成字符串
.concat(val, ...) 连接数组
.sort() 排序
.forEach() 将数组的每个元素传递给回调函数
.splice() 删除元素,并向数组添加新元素。
.map() 返回一个数组元素调用函数处理后的值的新数组

 

  forEach()方法:

    语法:forEach(function(currentValue, index, arr), thisValue)

    参数:

 

参数描述
function(currentValue, index, arr) 必需。 数组中每个元素需要调用的函数。
函数参数:
参数描述
currentValue 必需。当前元素
index 可选。当前元素的索引值。
arr 可选。当前元素所属的数组对象。
thisValue 可选。传递给函数的值一般用 "this" 值。
如果这个参数为空, "undefined" 会传递给 "this" 值

 

    

l1.forEach(function(value,index,arr){
    console.log(value,index,arr)
})
/* 
结果
111 0 (3) [111, 222, 333]
222 1 (3) [111, 222, 333]
333 2 (3) [111, 222, 333]
*/

 

  splice()方法:

    语法:splice(index,howmany,item1,.....,itemX)

    参数:

 

参数描述
index 必需。规定从何处添加/删除元素。
该参数是开始插入和(或)删除的数组元素的下标,必须是数字。
howmany 必需。规定应该删除多少元素。必须是数字,但可以是 "0"。
如果未规定此参数,则删除从 index 开始到原数组结尾的所有元素。
item1, ..., itemX 可选。要添加到数组的新元素

    

l1.splice(2,1) //从第二个开始删除一个
console.log(l1)
// 结果 [111, 222]

 

运算符

  算数运算符

    常用符号:

符号 说明
+
-
*
/
% 取余
++ 自增
-- 自减

 

    

var x=10;
var res1=x++;
var res2=++x;

res1;
10
res2;
12

// 这里由于的x++和++x在出现赋值运算式,x++会先赋值再进行自增1运算,而++x会先进行自增运算再赋值!

 

  比较运算符

    常用运算符:

符号 说明
> 大于
>= 大于等于
< 小于
<= 小于等于
== 弱等于
!= 不等于
=== 强等于
!== 强不等于

 

    

1 == “1”  // true  弱等于
1 === "1"  // false 强等于
/* 
上面这张情况出现的原因在于JS是一门弱类型语言(会自动转换数据类型),所以当你用两个等号进行比较时,JS内部会自动先将数值类型的1转换成字符串类型的1再进行比较。
*/

 

  逻辑运算符

    常用符号:

符号 说明
&&
||

 

流程控制

  if判断

    语法:

      if(条件1){
        条件1成立之后执行的代码
      }else if(条件2){
        条件2成立之后执行的代码
      }else{
        条件都不成立执行的代码
      }

    示例:

var a =3
if(a>5){
    console.log('条件1')
}else if(a=5){
    console.log('条件2')
}else{
    console.log('条件3')
}
// 结果 条件2

 

  switch判断

    语法:

      switch(n) {

        case 1: 执行代码块 1

        break;

        case 2: 执行代码块 2

        break;

        default: 与 case 1 和 case 2 不同时执行的代码

        }

    原理:首先设置表达式 n(通常是一个变量)。随后表达式的值会与结构中的每个 case 的值做比较。如果存在匹配,则与该 case 关联的代码块会被执行。

    需要使用 break 来阻止代码自动地向下一个 case 运行。

    示例:

var d=new Date().getDay(); 
switch (d) 
{ 
  case 0:x="今天是星期日"; 
  break; 
  case 1:x="今天是星期一"; 
  break; 
  case 2:x="今天是星期二"; 
  break; 
  case 3:x="今天是星期三"; 
  break; 
  case 4:x="今天是星期四"; 
  break; 
  case 5:x="今天是星期五"; 
  break; 
  case 6:x="今天是星期六"; 
  break; 
}
console.log(x)
//结果 今天是星期五

 

  for循环

    语法:

      for(起始值;循环条件;每次循环后执行的操作){
        for循环体代码
      }

    示例:

var l1 = [111,222,333,444,555,666]
         for(let i=0;i<l1.length;i++){
             console.log(l1[i])
         }
/*
结果
111
222
333
444
555
666
*/

 

  while循环

    语法:

      while(循环条件){
        循环体代码
      }

    示例:

var i = 0;
while (i < 4) {
  console.log(i);
  i++;
}
/*
结果
0
1
2
3
*/

 

三元运算符

  

var a = 1;
var b = 2;
var c = a > b ? a : b
//这里的三元运算顺序是先写判断条件a>b再写条件成立返回的值为a,条件不成立返回的值为b;三元运算可以嵌套使用;

 

函数

  函数的定义方式

    语法:

// 普通函数定义
function f1() {
  console.log("Hello world!");
}

// 带参数的函数
function f2(a, b) {
  console.log(arguments);  // 内置的arguments对象
  console.log(arguments.length);
  console.log(a, b);
}

// 带返回值的函数
function sum(a, b){
  return a + b;
}
sum(1, 2);  // 调用函数

// 匿名函数方式
var sum = function(a, b){
  return a + b;
}
sum(1, 2);

// 立即执行函数 书写立即执行的函数,首先先写两个括号()()这样防止书写混乱
(function(a, b){
  return a + b;
})(1, 2);

//使用=>定义函数
var f = v => v;
// 等同于
var f = function(v){
  return v;
}

 

  arguments参数

    arguments参数 可以获取传入的所有数据

    

function add(a,b){
  console.log(a+b);
  console.log(arguments.length);
 console.log(arguments[0]);//arguments相当于将出传入的参数全部包含,这里取得就是第一个元素1
}

add(1,2)
/*
结果
3
2
1
*/

 

内置对象和方法

  自定义对象

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

  类似于python中的字典类型

  创建对象方式:

var a = {'name':'tom','age':18} //方式1
var a = Object({'name':'tom','age':18}) //方式2

 

  Date对象

    创建date对象:

//方法1:不指定参数
var d1 = new Date();
console.log(d1.toLocaleString());
//方法2:参数为日期字符串
var d2 = new Date("2004/3/20 11:12");
console.log(d2.toLocaleString());
var d3 = new Date("04/03/20 11:12");
console.log(d3.toLocaleString());
//方法3:参数为毫秒数
var d3 = new Date(5000);
console.log(d3.toLocaleString());
console.log(d3.toUTCString());

//方法4:参数为年月日小时分钟秒毫秒
var d4 = new Date(2004,2,20,11,12,0,300);
console.log(d4.toLocaleString());  //毫秒并不直接显示

    常用方法:

常用方法 说明
getDate 获取日
getDay 获取星期
getMonth 获取月(0-11)
getFullYear 获取完整年份
getHours 获取小时
getMinutes 获取分钟
getSeconds 获取秒
getMilliseconds 获取毫秒
getYear 获取年
getTime 返回累计毫秒数(从1970/1/1 0点)

  JSON对象

    方法:

      JSON.stringify() # 序列化
      JSON.parse() # 反序列化

    转换逻辑:

      如果当前js中有一个布尔值true需要基于网络发送给python程序并且让python转换成布尔值 如何操作
        1.在js中使用JSON.stringify()序列化成json格式字符串
        2.基于网络发送给python程序(自动编码)
        3.python接收 解码并反序列化

 

 

  RegExp对象

    主要用于正则表达式

// 定义正则表达式两种方式
var reg1 = new RegExp("^[a-zA-Z][a-zA-Z0-9]{5,11}");
var reg2 = /^[a-zA-Z][a-zA-Z0-9]{5,9}$/;

// 正则校验数据
reg1.test('jason666')
reg2.test('jason666')

/*第一个注意事项,正则表达式中不能有空格*/ 

// 全局匹配
var s1 = 'egondsb dsb dsb';
s1.match(/s/)
s1.match(/s/g)
var reg2 = /^[a-zA-Z][a-zA-Z0-9]{5,9}$/g
reg2.test('egondsb');
reg2.test('egondsb');
reg2.lastIndex;
/*第二个注意事项,全局匹配时有一个lastIndex属性*/

// 校验时不传参数
var reg2 = /^[a-zA-Z][a-zA-Z0-9]{5,9}$/
reg2.test();
reg2.test(undefined);

var reg3 = /undefined/;
reg3.test();

RegExp

 

这篇关于JavaScript的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!