JavaScript学习笔记(一)

2017-11-09  本文已影响0人  孤意的学习笔记

内容提要

学习目标

1.1、JavaScript介绍

2、基本语法与类型

2.1、变量

var a = 1;

2.1、标识符(一)

2.2、标识符(二)

2.3、基本数据类型

的数据类型共有6中:

3、运算符

0 == ' '        //true
0 == 0        //true

2 == true        //false
2 == false        //false

以上表达式很容易出错,因此不要使用相等运算(==),最好只使用严格相等运算符(===)。

4、内置对象

4.1、字符串

'abc'.length   // 3
'JavaScript'.slice(0,4)  // "Java"
'hello world'.indexOf('o')  // 4
'JavaScript'.indexOf('script')  //-1  未匹配到
'Hello World'.toLowerCase()  //  "hello world"
'Hello World'.toUpperCase()  //  "HELLO WORLD"
'a|b|c'.split('|')  //["a","b","c"]

4.2、对象

var o1 = {};
var o2 = new Object();
var o = {
  p: 123,
  m: function() {...},
}
var o = {
  p: 'Hello World'
};

o.p  // "Hello World"
o['p']  //  "Hello World"
var o = {};
o.p = 1;
o.f = unction () {...}
var o = {
p: 'Hello World'
};
o.p = 'abc';
var o = {p: 1};
delete o.p  //  true
o.p  //  undefined

4.3、数组

var arr = [];
var arr = [1, 2];

arr.push(),push仿佛用于在数组的末端添加一个或多个元素,并返回添加新元素后的数组长度。注意,该方法会改变源数组。

var a = [];

a.push(1)  //  1
a.push('a')  //  2
a.push(true, {})  //4
a  //  [1, 'a', true, {}]

arr.pop(),pop方法用于删除数组的最后一个元素,并返回该元素。注意,饭方法同样会改变数组。

var a = ['a', 'b', 'c'];
a.pop()  //  'c'
a  //  ['a', 'b']
s.

arr.join(),join方法以参数作为分隔符,将所有数组成员组成一个字串返回。如果不提供参数,默认用逗号分隔。

var a = [1, 2, 3, 4];

a.join(' ')  //  '1 2 3 4'
a.join(' | ')  //   "1 | 2 | 3 | 4"
a.join()  //  "1,2,3,4" 

arr.shift,shift方法用于删除数组的第一个元素,并返回该元素。注意,该方法会改变原来数组。

var a = ['a', 'b', 'c'];
a.shift()  // 'a'
a  //  ['b', 'c']

arr.unshift(),unshift方法用于在数组的第一个位置添加元素,并返回添加新元素后的数组长度。注意,该方法会改变原来数组。

for...in遍历数组

var a = [1, 2, 3];
for (var i in a) {
  console.log(a[i]);
}
//  1
//  2
//  3

4.4、函数

function print(s){
  console.log(s);
}
var print = function(s) {
  console.log(s);
};

function命令声明的代码块,就是一个函数。function明龙后面是函数名,函数名后面是一对括号,里面是传入函数的参数。函数体放在大括号里面。

print();

4.5、Math

Math.abs(1)  //  1
Math.abs(-1)  //  1
Math.max(2, -1, 5)  //  5
Math.min(2, -1, 5)  //  -1
Math.floor(3.2)  //  3
Math.floor(-3.2)  //  -4
Math.ceil(3.2)  //  4
Math.ceil(-3.2)  //  -3
Math.random() 
function getRandomInt(min,max) {
  return Math.floor(Math.random() * (max - min + 1)) + min;
}

getRandomInt(1, 6)  //  5

4.6、JSON格式

JSON格式,是一种用于数据交换的文本格式,格式规则:

1、复合类型的值只能是数组或对象,不能是函数、正则表达式对象、日期对象。
2、简单类型的值只有四种:字符串、数值(必须以十进制表示)、布尔值和null(不能使用NaN、Infinity、-Infinity和undefined)。
3、字符串必须使用双引号表示,不能使用单引号。
4、对象的键名必须放在双引号里面。
5、数组或对象最后一个成员的后面,不能有逗号。
6、数值前不能加0.

JSON格式描述的文件,本身是个字符串,并非对象。

4.7、JSON对象

JSON对象,用于对JSON进行解析和序列化

    var shipData = '[{"name":"Richelieu","shipClass":"Battleship"},{"name":"Missouri","shipClass":"Battleship"}]';
    var ship = JSON.parse(shipData);

    console.log(ship[0].name);  //  Richelieu
    console.log(ship[0].shipClass);  //  Battleship

    console.log(ship[1].name);  //  Missouri
    console.log(ship[1].shipClass);  //  Battleship
var ships = [{
      "shipName": "Missouri",
      "shipClass": "Battleship",
      "number": 63
    }, {
      "shipName": "Richelieu",
      "shipClass": "Battleship",
      "number": 3
    }, {
      "shipName": "Enterprise",
      "shipClass": "Carrier",
      "number": 6
    }];

    JSON.stringify(ships);
    console.log(ships);

4.8、正则表达式

正则表达式(regular expression)是一种表达文本模式(即字符串结构)的方法,有点像字符串的模板,常常用作按照“给定模式”匹配文本的工具。

新建正则表达式

var telRegex1 = /^1[3|5|7|8]\d{9}$/;  //  字面量形式

var telRegex2 = new RegExp('/^1[3|5|7|8]\d{9}$/');  //  构造函数形式
4.8.1、元字符
4.8.2、修饰符
var regex = /b/g;
var str = 'abba';

regex.test(str);  //  true
regex.test(str);  //  true
regex.test(str);  //  false
4.8.2、正则对象方法
testRegex1('12323213216');  //  true
testRegex2('12323278616');  //  false
testRegex3('12743265416');  //  false
var ipReg = /(\d{1,3}\.){3}(\d{1,3})/
var ipStr = 'My ip is "192.168.118.47", please tell me yours.';

ipReg.exec(ipStr);  //  ["192.168.118.47", '118", "47"]

5、闭包与变量作用域

5.1、变量作用域

JavaScript有两张作用域:全局作用域和函数作用域。函数内可以直接读取全局变量,但是,在函数外部无法读取函数内部声明的变量。

var n = 999;

function f1() {
  console.log(n);
}
f1()  //  999
function f1() {
  cvar n = 999;
}
console.log(n);

5.2、闭包

在Javascript语言中,只有函数内部的子函数才能读取内部变量,因此可以吧闭包简单理解成“定义在一个函数内部的函数”。闭包最大的特点,就是他可以“记住”诞生的环境。

function f1(){
  var n = 999;
  function f2() {
    console.log(n);
  }
  return f2;
}
var result = f1();
result();  //  999

闭包的最大用处有两个,一个是可以去函数内部的变量,另一个用处,是封装对象的私有属性和方法。

  function Ship(){
    var shipName;
    var setShipName = function(name){
      this.shipName = name;
    }

    var getShipName = function(){
      console.log(this.shipName);
    }

    return{
      reShipName: shipName,
      reSetShipName: setShipName,
      reGetShipName: getShipName
    }
  }
  var ship1 = Ship();
  ship1.reSetShipName("Missouri");
  ship1.reGetShipName()  //  Missouri
上一篇下一篇

猜你喜欢

热点阅读