document.body.contentEditable=true

局部变量会在函数运行以后删除,全局变量会在页面关闭以后删除

作用域:

var city = 'BeiJing';
function Bar() {
console.log(city);
}
function f() {
var city = 'ShangHai';
return Bar
}
var ret = f()
ret()

打印结果是BeiJing

闭包:

var city = 'BeiJing';
function f3() {
var city = 'ShangHai';
function inner() {
console.log(city);
}
return inner;
}

var ret = f3();
ret();

打印结果是ShangHai

关键点在于调用函数的时候找函数定义过程

 

词法分析:

  1.分析  //Active Object   AO

    1.先看参数

    2.再看局部变量

    3.再看函数定义  // 优先级比参数高

  2.执行

  

var age = 18
function foo() {
console.log(age);
var age = 22;  //创建AO.age undefined,执行的时候赋值22
console.log(age);
function age() {  //赋值AO.age -->func
console.log('呵呵');
}
console.log(age);
}

foo()

结果 :

ƒ age() {
console.log('呵呵');
}
 22
 22

 

对象:

var a1 = [1,2,3];

var a2 = new Array(1,2,3);

 

var n = 1;  // number格式

var n2 = new Number(1)  //Object格式

 

 

 

内置对象:

  数据类型:

    Number:

      parseInt("111")

      parseFloat("11.11")

    String

    Boolean

 

组合对象:

Array类型

Date类型:

  var d1 = new Date();

  console.log(d1);  // Object格式

  console.log(d1.toLocalString())  // String格式

  var d2 = new Date("2018/12/12  20:03")  // 参数格式灵活

  console.log(d1.toLocalString())

  方法:

      .getDate()

    .getDay()  // 获取星期

    .getYear()

    .getFullYear()

    .getTime()  // 时间戳

 

JSON对象:

  var s = '{"name":"ALEX","age":18}';

  var ret = JSON.parse(s);  // 字符串转成JS对象,注意格式,字符串必须双引号

  var s2 = JSON.stringify(ret);  // JS对象转成字符串

 

Math对象:

  Math.abs(-1)

  abs()

  exp()

  floor()  // 地板舍入

  round()  // 四舍五入

  log()

  max()

  min()

  pow()  // pow(10,2)

  random()  // 0~1

  sin()

  sqrt()  // 平方根

  tan(x)

高级对象:

Object自定义对象, Error对象, Function对象, Global全局对象

 

自定义对象:

  var person = {name: '小强', age:18};

  //JS对象中,键(属性)不用加引号,并且自动把单引号变成双引号(Json)

  var p1 = new Object();

  p1.name = "alex";

  p1.age = 18;

  //遍历自定义对象:

  for (var i in p1){

    console.log(i);

    console.log(p1[i]);

  }

 

RegExp对象(正则):

  var reg1 = new RegExp("^[a-zA-Z][a-zA-Z0-9_]{5,11}$");

  var ret1 = reg1.test("alexSB");

  /(^[a-zA-Z][a-zA-Z0-9_]{5,11}$)/.test("xiaoqiang");  // 简化写法

  注意事项:

    1.正则表达式中间一定不能有空格

    2.不传值相当于传了一个undefined,并当做字符串使用

    3.正则的两种模式

      var ss = "Alexdashabi";

      var s3 = ss.replace("a", "哈哈");  //不改变默认字符串,而是生成一个新的,只能替换一次

      var s4 = ss.replace(/a/gi, "哈哈");  // g表示全局(替换所有) i 表示忽略大小写

    4.当正则表达式使用了g全局模式,并且去检测字符串的时候,会有一个lastIndex记住上一次匹配成功的位置