javascript基础拾遗(一)

1.判断变量类型

    var num = '123';
    if(typeof num == 'number'){
        alert('this is a number');
    }
    else{
        throw 'this is not a number';
    }

2.arguments关键字
只在函数内部起作用,函数所有入参

function foo(x) {
        console.log('x is :' + x);
        for(var i=0;i<arguments.length;i++){
            console.log('arguments['+i+']:'+arguments[i]);
        }
    }
    foo(1,2,3);

3.rest关键字
除了函数定义参数外的其他入参

function foo(x,...rest) {
        console.log('x is :' + x);
        for(var i=0;i<arguments.length;i++){
            console.log('arguments['+i+']:'+arguments[i]);
        }
        console.log(rest)
    }
    foo(1,2,3);

4.JavaScript会在行末自动添加分号

function foo() {
        // right
        return {name: 'foo'}
        // wrong
        //return
        //{name:'foo'}
    }
    result = foo();
    console.log(result.name);

5.变量作用域
1)内部函数可以访问外部函数变量,外部变量不能访问内部函数的变量

function foo() {
        x = 1;
        function calc() {
            // right
            y = x + 1;
        }
    }
    // wrong
    console.log(x);

2)内部函数变量屏蔽外部变量

function foo() {
        x = 1;
        function calc() {
            x = 2;
            // 2
            console.log(x);
        }
        // 1
        console.log(x);
    }

3)变量提升
javascript函数在执行时,会先扫描所有的变量定义,放在函数顶部

function foo() {
        var x = 'hello ' + y;
        var y ='tomorrow';
        // 输出hello undefined
        console.log(x);
    }
    foo();

可以看出,可以执行成功,y有申明,但是y要到下一条语句才会赋值。
4)全局作用域
不在任何函数内定义的变量具有全局作用域
实际上,javascript有一个全局对象window,全局变量被绑定到这个全局对象window

var x = 100
    // 100
    alert(window.x)

window对象表示浏览器打开的当前窗口,拥有alert,length,height,location,screen等很多属性
5)命名空间
全局变量会绑定到window上,不同的javascript文件使用相同的全局变量会造成冲突。
减少这种问题的一种方法是,把各自的变量和函数全部绑定到各自的全局变量,如:
var MYAPP = {};
MYAPP.name = 'myapp';
MYAPP.version = 1.0;

MYAPP.foo = function(){
return 'foo';
};
6)局部作用域
javascript的变量作用域针对的是函数,像for循环等语句块中的变量,属于块级作用域,是不具有局部作用域的。

function foo() {
        for(var i=0;i<10;i++){
        
        }
        i = i +10;
        // i=20
        console.log(i)
    }
    foo();

ES6引入了let关键字,使用let可以声明一个块级作用域的变量

function foo() {
        for(let i=0;i<10;i++){
        
        }
        // wrong
        console.log(i)
    }
    foo();

7)常量
ES6引入了const关键字,来申明一个常量
const PI =3.14
8)解构赋值
同时对一组变量进行赋值

var array = ['hello', 'world']
var a = array[0];
var b = array[1];
var [a,b] =  ['hello', 'world']

8)异常处理

try{
}
catch(e){
}
finally{
}

posted on 2017-12-05 19:34  迪米特  阅读(214)  评论(0编辑  收藏  举报

导航