자바 스크립트 --- 기능

1. 정의 함수

정의 된 방법

1. 절대 값 함수

function abs(x){
    if(x>=0){ 
        return x;
    }else{
        return -x;
    }
}

일단 함수 끝 부분에 대신 반환에 실행하고 결과를 반환합니다!

돌이킬 수없는 경우, 그 결과를 반환하는 기능을 수행, 결과는 정의되지

두 번째 방법은 정의된다

var abs = function(x){
    if(x>=0){
        return x;
    }else{
        return -x;
    }
}

함수 (X)는 {...}이 익명의 함수이다. 그러나 복근에 결과를 할당 할 수 있습니다, 당신은 복근하여 함수를 호출 할 수 있습니다!

두 번째 방법 및 방법에 해당!

통화 기능

abs(10)  //10
abs(-10) //10

매개 변수 문제가 : 자바 스크립트가 매개 변수를 전달할 수있는 매개 변수가 통과 할 수 없습니다 ~

var abs = function(x){
    //手动抛出异常来判断
    if (typeof x!== 'number') {
        throw 'Not a Number';
    }
    if(x>=0){
        return x;
    }else{
        return -x;
    }

}

인수

arguments키워드 무료 JS입니다;

대표가 모든 매개 변수에 전달 된 배열입니다!

var abs = function(x){

    console.log("x=>"+x);

    for (var i = 0; i<arguments.length;i++){
        console.log(arguments[i]);
    }

    if(x>=0){
        return x;
    }else{
        return -x;
    }

}

질문 : 인수는 우리가 때때로 추가 작업에 추가 매개 변수를 사용하려면, 모든 매개 변수가 포함되어 있습니다. 기존의 매개 변수를 제외 할 필요 -

쉬다

전 :

if (arguments.length>2){
    for (var i = 2; i<arguments.length;i++){
		//。。。。
    } 
} 

.... 매개 변수에 정의 된 - ES6의 새로운 기능은 모든 매개 변수를 얻을뿐만 아니라, 도입

function aaa(a,b,...rest) {
    console.log("a=>"+a);
    console.log("b=>"+b);
    console.log(rest);
}

매개 변수는 최종 표면에 쓸 수있는 휴식, 식별하는 ... 사용되어야합니다.

2. 변수 범위

자바 스크립트, VAR 실제 변수는 범위를 정의한다.

함수 본문에서 가정하자 문, 함수에서 사용할 수 없습니다 체외 - (다시 볼 수 후 비 달성하기 위해 闭包)

function yy() {
    var x = 1;
    x = x + 1;
}

x = x + 2; //Uncaught ReferenceError: x is not defined

두 기능은 동일한 변수 이름을 사용하는 경우, 긴 내장 함수로서 충돌하지

function yy() {
    var x = 1;
    x = x + 1;
}

function yy1() {
    var x = 'A';
    x = x + 1;
}

내부 기능은 그 반대, 외부의 멤버 함수에 액세스 할 수 있습니다

function yy() {
    var x = 1;

    // 内部函数可以访问外部函数的成员,反之则不行
    function yy2() {
        var y = x + 1;  // 2
    }

    var z = y + 1; // Uncaught ReferenceError: y is not defined
}

가정 그 함수 변수와 동일한 이름의 외부 함수 내부 변수!

function yy() {
    var x = 1;

    function yy2() {
        var x = 'A';
        console.log('inner'+x); // outer1
    }
    console.log('outer'+x); //innerA
    yy2()

}

yy()

. ', 시작 외부'보기 '에서'와 '는'변수를 같은 이름의 외부 변수 함수가 외부 함수를 차폐의 내부 기능을 존재한다고 가정 - 자신의 함수와 변수에 대한 자바 스크립트 함수로 가정하자.

변수의 범위를 향상시킬

function yy() {
    var x = "x" + y;
    console.log(x);
    var y = 'y';
}

결과 : xundefined

설명, JS 실행 엔진이 자동으로 Y의 선언을 향상하지만, 할당 변수 y '를 개선하지 않을 것이다;

function qj2() {
    var y;

    var x = "x" + y;
    console.log(x);
    y = 'y';
}

이것은 기존의 속성에 자바 스크립트 빌드의 시작입니다. 사양을 개발 : 모든 변수가 쉬운 코드를 유지 보수를 관리 못하는 아니라 기능의 머리에서 정의됩니다;

function yy2() {
    var x = 1,
        y = x + 1,
        z,i,a; //undefined

    // 之后随意用
}

전역 함수

//全局变量
x = 1;

function f() {
    console.log(x);
}
f();
console.log(x);

글로벌 객체 창

var x = 'xxx';
alert(x);
alert(window.x); // 默认所有的全局变量,都会自动绑定在 window对象下;

경보 () 함수 자체가 인 window변수;

var x = 'xxx';

window.alert(x);

var old_alert = window.alert;

//old_alert(x);

window.alert = function () {

};
// 发现 alert() 失效了
window.alert(123);

//恢复
window.alert =  old_alert;
window.alert(456);

전역 범위에서 발견되지 않는 경우는 자바 스크립트가, 발견 할 것이다 실제로 기능 범위에없는 것을 가정에만 글로벌 범위, 어떤 변수 (함수가 아니라 변수로 간주 할 수있다)이며, 오류 RefrenceError

명세서

글로벌 변수의 모든 때문에 우리의 창으로 바인딩됩니다. 다른 JS 파일, 같은 전역 변수, 갈등을 사용하는 경우 -> 경우 당신은 충돌을 줄일 수있다?

// 唯一全局变量
var KuangApp = {};

// 定义全局变量
KuangApp.name = 'yy';
KuangApp.add = function (a,b) {
    return a + b;
}

이름 충돌의 글로벌 문제를 줄이고, 자신의 고유 한 이름 공간 정의에 모든 코드를 넣어 -

jQuery를

로컬 범위하자

function aaa() {
    for (var i = 0; i < 100; i++) {
        console.log(i)
    }
    console.log(i+1); //问题? i 出了这个作用域还可以使用
}

ES6는 지역 범위 해결 충돌을 키워드하자!

function aaa() {
    for (let i = 0; i < 100; i++) {
        console.log(i)
    }
    console.log(i+1); //Uncaught ReferenceError: i is not defined
}

난 당신이 사용하는 것이 좋습니다 let지역 변수의 범위를 정의;

상수 const를

ES6하기 전에, 어떻게 상수를 정의합니다 : 만 모두 대문자를 사용라는 이름의 변수가 일정, 추천이 값을 수정하지

var PI = '3.14';

console.log(PI);
PI = '213'; //可以改变这个值
console.log(PI);

ES6의 정수 키워드를 도입 const

const PI = '3.14'; // 只读变量
console.log(PI);
PI = '123'; // TypeError: Assignment to constant variable.
console.log(PI);

3. 방법

정의 방법

속성들 및 방법 :이 방법은 개체가 오직 두 가지가 내부 객체 함수이고

var yy = {
    name: '洋',
    bitrh: 2000,
    // 方法
    age: function () {
        // 今年 - 出生的年
        var now = new Date().getFullYear();
        return now-this.bitrh;
    }
}
//属性
yy.name
//方法,一定要带  ()
yy.age() 

이. 무엇 대표? 외에도 위의 코드는 ~ 참조

function getAge() {
    // 今年 - 出生的年
    var now = new Date().getFullYear();
    return now-this.bitrh;
}

var yy = {
    name: '洋',
    bitrh: 2000,
    age: getAge
}

// yy.age() ok
// getAge()  NaN   window

이것은, 지점 아니다는 기본 객체 호출을 가리키는 것입니다;

대다

JS에서이 점을 제어 할 수 있습니다!

function getAge() {
    // 今年 - 出生的年
    var now = new Date().getFullYear();
    return now-this.bitrh;
}

var yy = {
    name: '洋',
    bitrh: 2000,
    age: getAge
};

var xiaoming = {
    name: '小明',
    bitrh: 2000,
    age: getAge
};

// yy.age() ok

getAge.apply(xiaoming,[]);// this,指向了 yy,参数为空
게시 39 개 원래 기사 · 원 찬양 1 · 조회수 537

추천

출처blog.csdn.net/love_to_share/article/details/103925683