js笔记1

来源:互联网 发布:工业产品动画制作软件 编辑:程序博客网 时间:2024/06/17 14:22

1.变量声明

未var 声明的变量为全局变量

'use strict';在js代码首行表示在strict模式下运行js代码
未var的变量会报错

2.变量类型

number

NaNInfinity

string
bool
对象
数组
null
undefined

多行字符串

233
344
222

map 数据类型

new Map()var m = new Map([['kk',100],['ww',2000]]);has()get()delete()set()

set 数据类型

new Set(['233','333']);add()delete()

literable

ES6标准引入了新的iterable类型,Array、Map和Set都属于iterable类型
可以用

for(var i of a)

记住是of
与for in的区别
for in循环属性(array 对象)
for of 循环元素(set map array)

3.函数

function functionname(parameter){ //do something; }

3.1匿名函数


var x = function(parameter){}
x(parameter);

函数参数问题
自带 arguments关键字可以访问当前函数所有传入的参数,及时函数不需要这些参数

  • 实际上arguments最常用于判断传入参数的个数
  • ES6标准引入了rest参数
function abs(a,b,...rest){    console.log('a = ' + a);    console.log('b = ' + b);    console.log(rest);}

3.2箭头函数

var f = (x,y)=>y+x;alert(f(1,5));

3.3js行末自动加;

前面我们讲到了JavaScript引擎有一个在行末自动添加分号的机制

return    a;

无法return

所以正确的多行写法是:

function foo() {    return { // 这里不会自动加分号,因为{表示语句尚未结束        name: 'foo'    };} 

4.变量声明

变量提升

js扫描所有变量声明语句,提升到函数顶部
JavaScript引擎自动提升了变量的声明,但不会提升变量的赋值

全局

全局作用域
不在任何函数内定义的变量就具有全局作用域。实际上,JavaScript默认有一个全局对象window,全局作用域的变量实际上被绑定到window的一个属性

var x =2333;console.log(window.x);

以变量方式var foo = function () {}定义的函数实际上也是一个全局变量,因此,顶层函数的定义也被视为一个全局变量,并绑定到window对象

'use strict';function foo() {    alert('foo');}foo(); // 直接调用foo()window.foo(); // 通过window.foo()调用 

局部作用域
由于JavaScript的变量作用域实际上是函数内部,我们在for循环等语句块中是无法定义具有局部作用域的变量的:

'use strict';function foo() {    for (var i=0; i<100; i++) {        //    }    i += 100; // 仍然可以引用变量i} 

为了解决块级作用域,ES6引入了新的关键字let,用let替代var可以申明一个块级作用域的变量:

'use strict';function foo() {    var sum = 0;    for (let i=0; i<100; i++) {        sum += i;    }    i += 1; // SyntaxError} 

5.对象方法

在一个方法内部,this是一个特殊变量,它始终指向当前对象

给对象加方法

var people = {    x:'222',    y:function(){        alert("2333");    }  }  people.y();

在函数内部this指向window(use strict)或者undefined(未使用use strict

指定this指向的对象可以使用两种方法
1. apply

function.apply(object,array);//array is arguments

2.call

function.call(object,arguments);//one by one

6.闭包

创建一个匿名函数并且立刻执行

console.log(function(X){return X*X;}(3);//9
原创粉丝点击