学习笔记(二):JavaScript(2)

Learn JS via freecodecamp

Posted by AlbertWu on August 24, 2016

在FCC 上花了一下午时间过了10 hrs 的js基础课程过了一遍,虽然很多关于赋值,判断,循环的东西是代码共同的逻辑结构,但是在赋值以及判断上js有其独特的地方,在此做一下记录。

JS变量声明

不像在c++中赋值前先要对变量声明其类型,如float,long,string等,在js中万物归一,var varName = varData

【提供七种不同的data types(数据类型),它们是undefined(未定义), null(空),boolean(布尔型), string(字符串),symbol(符号), number(数字), and object(对象)。】

全局变量和局部变量

  • 在function外直接声明 var varName = varData 为全局变量(global scope)
  • 在function内声明 var varName = varData 则为局部变量(local scope),且优先级高于全局
  • 在function内直接对从未声明过的变量赋值则产生全局变量
var global = "I am a global variable";

function myFunction() {
  var local = "I am a local variable";
  globaltoo = "I am a global variable too";
}

myFunction();

console.log(global);
console.log(local);
console.log(globaltoo);

然后你会在控制台得到如下结果

I am a global variable
undefined
I am a global variable too

数组的添加(删减)函数

共四个函数push()从数组后侧添加, pop()从数组后侧删除,unshift()从数组前侧添加, shift()从数组前侧删除

var array = [1,2,3];
array.push(4);//array = [1,2,3,4]
array.pup();//array = [1,2]
var arrayRemoveData = array.pup()//arrayRemoveData = 3
array.unshift(0)//array = [0,1,2,3]
array.shift()//array = [2,3]

正则表达式

Regular expressions 正则表达式被用来根据某种匹配模式来寻找strings中的某些单词。

举例:如果我们想要找到字符串The dog chased the cat中单词 the,我们可以使用下面的正则表达式: /the/gi

我们可以把这个正则表达式分成几段:

/ 是这个正则表达式的头部

the 是我们想要匹配的模式

/ 是这个正则表达式的尾部

g 代表着 global(全局),意味着返回所有的匹配而不仅仅是第一个。

i 代表着忽略大小写,意思是当我们寻找匹配的字符串的时候忽略掉字母的大小写。

更多实例如\d,\s等,查看文档

// Setup
var testString = "Ada Lovelace and Charles Babbage designed the first computer and the software that would have run on it.";

// 举例
var expressionToGetSoftware = /software/gi;
var softwareCount = testString.match(expressionToGetSoftware).length;
  
var expression = /and/gi;

// This code counts the matches of expression in testString
var andCount = testString.match(expression).length;//Output:2表示testString中一共出现两次and

对象赋值

直接对对象进行赋值以及使用构造函数来创建对象

var varNameOne = {'a':1,'b':2,'c':3};
//设立构造函数
var varNameFunction = function(){
  this.a = 1;
  this.b = 2;
  this.c = 3;
}
var varNameTwo = new varNameFunction();
//构造函数可传入参数

对象的私有属性和私有方法

var Bike = function() {
  var Gear;//private

  var setGear = funtion(){
    Gear = 4;
  }//private
  
  this.getGear = function(){
    return Gear;
  };//public

};
//如果要访问私有属性可以通过公有函数返回私有属性

常用的数组函数

1.map 方法会迭代数组中的每一个元素,并根据回调函数来处理每一个元素,最后返回一个新数组。注意,这个方法不会改变原始数组

var oldArray = [1,2,3,4,5];
var newArray = oldArray.map(function(val,index,arr){
  return val + 3;
});
//类似for

2.reduce 用来迭代一个数组,并且把它累积到一个值中。

var array = [4,5,6,7,8];
var singleVal = 0;
singleVal = array.reduce(function(previousVal,currentVal){
  return previousVal + currentVal;
},0);
//求和,第二参数表示初值

3.false 方法过滤数组,返回新数组。

var oldArray = [1,2,3,4,5,6,7,8,9,10];
var newArray = oldArray.filter(function(val){
  return val <= 5;
});

4.sort 方法用于数组排序,返回新数组。

var numbers = [4, 2, 5, 1, 3];
numbers.sort(function(a, b) {
  return a - b;
});
// [1, 2, 3, 4, 5]

5.reverse 方法来翻转数组。 6.concat 方法可以用来把两个数组的内容合并到一个数组中。 7.split 方法按指定分隔符将字符串分割为数组。

var string = "Split me into an array";
var array = [];
array = string.split(' ');

8.join 方法来把数组转换成字符串,里面的每一个元素可以用你指定的连接符来连接起来,这个连接符就是你要传入的参数。

var joinMe = ["Split","me","into","an","array"];
var joinedString = '';
joinedString = joinMe.join(' ');

Creative Commons License
This work is licensed under a CC A-S 4.0 International License.