JavaScript全总结之控制和函数

2016-12-19  本文已影响11人  Alkaidx

流程控制语句

if(condition){
    //true statement
}else {
    //false statement
}

其中js很厉害的一点就是conditon不一定是布尔值,会帮你自动转换。

switch(expresstion){
    case value1:
        statement;
        break;
    case value2:
        statement;
        break;
    case value3:
        statement;
        break;
    default:
        statement;
}
while(expression){
    statement;
}
do{
    statement;
}while(expression);
for(var i = 10; i > 0; i--){
    console.log(i);
}
for(property in object){
    statement
}
for(var i = 1; i< 10; i++){
    if(i % 4 === 0){
        break;
    }
    console.log(i);
}
for(var i = 1; i< 10; i++){
    if(i % 4 === 0){
        continue;
    }
    console.log(i);
}

函数和作用域

JavaScript函数是指一个特定代码块,可能包含多条语句,可以通过名字来供其它语句调用以执行函数包含的代码语句。

  1. 声明函数
    ECMAScript规定了三种声明函数方式
function functionName(){
    statement;
}
使用function关键字可以声明一个函数,看个例子
function printName(){
    console.log('Byron');
}
printName();
var printName = function(){
    console.log('Byron');
};
  1. 参数
function printName(name){
    console.log(name);
}
printName('Byron');
printName('Casper);
  1. 返回值
    有时候我们希望在函数执行后给我们一个反馈,就像表达式一样,给我们个结果,我们可以通过return
    来实现,调用return后,函数立即中断并返回结果,即使后面还有语句也不再执行,其实我们不写return语句,函数也会默认给我们返回undefined

  2. 命名冲突

 var fn = 3;
function fn(){}
console.log(fn); // 3
function fn(fn){
   console.log(fn); 
   var fn = 3; 
   console.log(fn);
}
fn(10); //10 3
  1. 作用域
    在JavaScript中{}并没有带来块作用域,JavaScript的作用域是靠函数来形成的,也就是说一个函数内定义的变量函数外不可以访问
  2. var
    在声明变量的时候需要var,不写var会声明一个全局的变量,这是我们在编程中应该要避免的,即使真的需要全局变量,也应该在最外层作用域使用var声明
  3. Function.prototype.bind
    ES5 为Function新增bind方法
    Function.prototype.bind返回一个把内部this设为thisArg的方法,读起来很绕,其实就是,返回一个新方法,这个方法内部的this是参数thisArg
    说的再简单一点就是——改变this的目标。
// DOM
<div id="test">Click Here</div>
// js
var handler = {
    message: 'This is a test',
    click: function () {
        alert(this.message);
    }
};
document.getElementById('test').onclick = handler.click;

如果这样绑定div的click事件处理程序,大家都会看出来,点击的时候弹出来的对话框内容是undefined,因为执行的时候this是window,我们需要一定的技巧才可以处理此事,达到预期效果,但是使用新添的bind我们可以轻松改变this

document.getElementById('test').onclick = handler.click.bind(handler);
上一篇 下一篇

猜你喜欢

热点阅读