JavaScript基本变量

注释

同Java语言一样,使用

//
/*
*/

进行注释

数据类型

在计算机体系中,数据类型是只对任何语言都需要基本存在的东西。
JavaScript提供八个不同的数据类型:

undefined;
null;
boolean;
string;
symbol;
bigint;
number;
object;

动态存储数据类型

变量允许计算机以动态的方式储存和处理数据。
JavaScript通过使用标签来指向数据而不是使用数据本身来做到这一点,八种数据类型中的任何一个都可以存储在变量中。
例如:

var myString = "I am a string";
var myBoolean = true;
var isNull = null;
var isNum = 52;

未初始化变量的情况

声明JavaScript变量后,他们的初始值为undefined。如果此时对未初始化的变量进行数学运算,undefined的变量的结果将是NaN,如果将字符与undefined变量相加,你会得到一个文本字符串的undefined。

var a;
a = a + 1var b;
b = b + "String";

变量运算

与Java以及大多数语言一样,JavaScript同样具有基本的加减乘除、自加自减运算:

var a = 1 + 2;
var b = 2 - 1;
var c = 2 * 3;
var d = 4 / 2;
var i++;
var j--;

同时,var声明的变量是可以存储任何数据类型的,其中包括浮点数,浮点数运算也是可以直接运算的:

var a = 2.0 + 3.3;
var b = 2.5 - 0.5;
var c = 2.0 * 2.5;
var d = 6.6 / 2.0;

另外,取余运算也是一样的:

var a;
a = 10 % 2;

同样的复合赋值:

var a = 7;
a += 10;
a -= 5;
a *= 2;
a /= 3;

字符串变量

由双引号和单引号引起的都被视为一个字符串常量,都可以被存进var 声明的变量中:

var myName = "Zhang";
var lastName = 'Externity';

转义符号

codeOutput
\’单引号
\"双引号
\\反斜杠
\n换行
\r回车
\t制表符
\b词边界
\f换页

如果想在字符串变量中加入有冲突的字符时,与其他计算机语言一样,需要用到转义字符

当然我们也可以通过单引号和双引号都可以指代字符串的特性,实现同时在字符串中使用两种引号:

var s = ' Fim exclaims to Jacke, "Algebraic!"';

连接字符串

与Java语言一样,JavaScript支持对字符串使用 + 来连接两个字符串:

常量与常量连接:

"My name is Alan, " + "I concatenate.";

自加连接:

var str = "I come first.";
str += "I come second.";

变量与常量连接:

var name = "freeCode";
var str = "Hello" + name + "world.";

变量与变量自加连接:

var name = "awesome!";
var str = "free Code";
str += name;

查询字符串属性

JavaScript特有的方式可以对字符串直接进行查询:

查找字符串长度:

var stringLength = "Alan Peter".length;

表示字符串中的字符:
JavaScript可以直接通过索引的方式直接在字符串中查找到对应索引的字符

var theString = "Charles";
var firstLetter = theString[0];

字符串的“不可变性”
JavaScript中,String中的字符是不可改变的,一旦创建就无法更改其中的内容。但我们可以给他重新赋值。

var str = "Bob";
str[0] = "J";//这是错误的,不可改变其内容。

var str = "Bod";
str = "Job";//只能通过重新赋值的方式改变字符串内容

可以通过访问长度与索引的方式找到倒数位置的字符:

var firstName = "Charles";
var lastLetter = firstName[firstName.length - 1];

数组变量

使用JavaScript的array类型变量,我们可以将多个数据储存在一个地方。

可以直接在数组声明中以方括号开头,以方括号结尾,并在每个条目之间添加一个逗号,如:

var sandwich = ["peenut butter","jelly","bread"];

JavaScript与其他类型计算机语言不同,js支持不同数据类型的数据存储在一个数组内。

var array = ["string",54,null,true];

多维数组

与其他类型计算机语言一样,支持多维数组的存储,但对于计算机的多维数组理解,建议可以当作一个数组内嵌套了一个数组,能够更加方便的理解。

var myArray = [[""Bulls",23],["White Sox",45]];

查找数组属性

同字符串查找属性一样,可以直接通过length查看数组长度。

var array = [1,2,3,4];
var len = array.length;

通过索引访问数组内部数据

var array = [20,60,50];
var data = array[1];

与字符串不同,数组的内部条目是可变的,可以自由更改。

var array = [50,40,30];
array[0] = 15;

多维数组的访问

var arr = [[1,2,3],[4,5,6],[7,8,9],[[10,11,12],13,14]];
arr[3] == [[10,11,12],13,14];
arr[3][0] == [10,11,12];
arr[3][0][1] == 11;

更改数组

JavaScript特有的可添加方法:
将数据附加到数组末尾,通过push函数可以直接实现:

var arr1 = [1,2,3];
arr1.push(4);

var arr2 = ["Stimpson","J","cat"];
arr2.push(["happy","joy"]);

pop()用于从数组末尾弹出一个值,我们可以通过将弹出的值分配给变量来存储它,换句话说就是,pop()从数组最后删除一个元素并返回该元素。

var array = [1,4,6]var oneDown = array.pop();//此时array为[1,4],oneDown的值为6

pop()总是删除数组的最后一个元素,如果想要删除第一个怎么办?
使用shift()方法,它的工作原理与pop()一样,删除第一个元素并返回该元素。

var array = ["Stimpson","J","cat"];
var removedOne = array.shift();//此时array值为["J","cat"],removedOne为"Stimpson"

如果想要从开头增加元素,我们还可以使用unshift()方法,工作方式与push()相同,在数组开头增加一个元素。

var array = ["Stimpson","J","cat"];
array.unshift("Happy");//此时array的值为["Happy","Stimpson","J","cat"]

扩展运算符

扩展运算符(spread)是三个点(…)。它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列。
例如:

const array = [1, 2, 3, 4, 5];
const newArray = [9, ...array, 10];

//此时newArray就相当于:
[9, 1, 2, 3, 4, 5, 10];

当然这也可以应用于参数的传递:

function functionSpeadArray(String ...arr){

}

数组的解构赋值

JS允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。

以前,为变量赋值,只能直接指定值。

let a = 1;
let b = 2;
let c = 3;

JS 允许写成下面这样。

let [a, b, c] = [1, 2, 3];

上面代码表示,可以从数组中提取值,按照对应位置,对变量赋值。

本质上,这种写法属于“模式匹配”,只要等号两边的模式相同,左边的变量就会被赋予对应的值。下面是一些使用嵌套数组进行解构的例子。

let [foo, [[bar], baz]] = [1, [[2], 3]];
foo // 1
bar // 2
baz // 3

let [ , , third] = ["foo", "bar", "baz"];
third // "baz"

let [x, , y] = [1, 2, 3];
x // 1
y // 3

let [head, ...tail] = [1, 2, 3, 4];
head // 1
tail // [2, 3, 4]

let [x, y, ...z] = ['a'];
x // "a"
y // undefined
z // []

参考自ES6入门,更多学习了解,请前往:https://es6.ruanyifeng.com/#README

数组中的filter方法

filter是一个常用的操作,它用于把Array的某些元素过滤掉,然后返回剩下的元素。

Array的filter()接收一个函数,filter()把传入的函数依次作用于每个元素,然后根据返回值是true还是false决定保留还是丢弃该元素。
在这里插入图片描述

例如,在一个Array中,删掉偶数,只保留奇数,可以这么写:

 var arr = [1, 2, 4, 5, 6, 9, 10, 15];
 var r = arr.filter(function (x) {
     return x % 2 !== 0;
 });
 r; // [1, 5, 9, 15]

也可以更简便的写法:

const numbers = [1, 2, 3, 4, 5];
const filtered = numbers.filter(n => n % 2 === 0);

filtered === [2, 4];

其中 n => n % 2 === 0 是箭头函数,相当于:

function (n){
    return n%2==0;
}

数组中的map方法

这是一种映射方法,map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
map() 方法按照原始数组元素顺序依次处理元素。

注意: map() 不会对空数组进行检测。
注意: map() 不会改变原始数组。

在这里插入图片描述

    const numbers = [1, 2, 3, 4, 5];
    const mapped = numbers.map((n, i) => `Unit ${n} for element at index ${i}`);

    mapped === ['Unit 1 for element at index 0', 'Unit 2 for element at index 1', 'Unit 3 for element at index 2', 'Unit 4 for element at index 3', 'Unit 5 for element at index 4'];

其中,`` 是反引号,在JavaScript中反引号是模板字符串的意思,具体模板字符串可以前往了解:
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Template_literals

数组中的reduce方法

reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
reduce() 可以作为一个高阶函数,用于函数的 compose。

注意: reduce() 对于空数组是不会执行回调函数的。
在这里插入图片描述

  const numbers = [1, 2, 3, 4, 5];
  const reduced = numbers.reduce((prev, current) => prev + current);

reduced === 15;

除此之外JavaScript还提供了许多对于数组的方法使用,具体学习可前往:
https://www.runoob.com/jsref/jsref-obj-array.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值