スコープ、事前解析、オブジェクト、ビルトイン方式の数学日付アレイ

スコープ

使用されるプログラムコード名は必ずしも有効ではない利用可能なコードは、信頼性の向上、範囲が局所ロジックプログラムを改善する、スコープの名前で、名称(変数)の利用可能性の範囲を定義します減少名前の衝突。

グローバルスコープ、ローカルスコープ:JavaScriptのスコープ(ES6)の前に

グローバルスコープ:全体のスクリプトタグまたは別のJSファイル

ローカルスコープ(関数のスコープ):関数内のスコープです。

変数のスコープ

グローバル変数:変数は、グローバルスコープ内で宣言、割当て変数は大域変数で直接以内に宣言(VAR)関数が存在しない場合num = 2;

ローカル変数:関数宣言の内部変数。

グローバルとローカル変数

  • グローバル変数どこでも使用することができ、ブラウザを閉じているときのみは、より多くのメモリリソースを破壊されます。
  • ローカル変数は関数内でのみ使用することができ、プログラムが終了すると、それが破壊される、節約のメモリリソースと比較します。

スコープチェーン

採取された値を決定するために、外部関数ルックアップチェーンの変数を使用して内部アクセス機能は、このような構造は、スコープチェーンと呼ばれています

var num = 10;
function fu() {
    var num = 20;
    function fun() {
        var num = 30;
        // 在fun内部往外部查找
        // 1. 如果 fun 没有声明 num 就去找到 fu 内部 num 变量;
        // 2. 如果 fun 和 fn 内部都没有 num 就去全局找;
        // 3. 如果 都没有 报错 num is not defined;
        console.logg(num);
    }
    fun();
}
fu(); 

事前解析されました

2つの段階でのJS JSパーサの実行:事前パース、コード実行

事前分析: JsのJSエンジンはまた、すべてのVAR内部の機能は、現在のスコープの一番上に上げます

コードの実行:ダウン順次実行から。

事前分析変数(変数のアップグレード)

割り当てを上げていない、現在のスコープの先頭にすべての変数宣言をアップグレードすることです。

console.log(num);  // num is not defined;
var num = 10;
// 等价于
var num;
console.log(num);
num = 10;
fun(); // fun is not a function 
var fun = function () {...}
// 等价于
var fun;
fun();
fun = function () {...};

事前分析関数(関数プロンプト)

これは、呼び出しを強化するだけでなく、フロントの現在のスコープを強化するために、すべての機能を宣言することです

fun() 
function fun() {...}
// 等价于
function fun() {...}
fun();

ケース:

fn();
console.log(a);
console.log(b);
console.log(c);
function fn() {
    var a = b = c = 9;
    // var a = 9, b = 9, c = 9; 这种声明方式 b 和 c 是全局变量
    console.log(a);
	console.log(b);
	console.log(c);
}

オブジェクト

JavaScriptでは、オブジェクトがセットのプロパティとメソッドの順不同のコレクションです、すべてがオブジェクト、文字列番号の配列関数であります...

3つの方法でオブジェクトを作成します。

オブジェクトリテラル

// 创建一个名称为 obj 的对象;并且包含多个属性和一个方法;
var obj = {
	uname: 'zs',
    uage: '23',
    usex: '0',
    sayHi: function () {
        console.log('Hi~');
    }
};
// 1. 调用对象属性;
console.log(obj.uname);
console.log(obj['uage']);
// 2. 调用对象方法
obj.sayHi();

新しいオブジェクト

var obj = new Object(); // 声明一个空对象;
obj.name = 'zs';
obj.sayHi = function () {
    return 'Hi';
}
console.log(obj.name);
console.log(obj.sayHi());

コンストラクタは:特殊機能は、主にオブジェクト、すなわちオブジェクトのメンバに割り当てられた初期化値は、オブジェクトがこの機能にカプセル化されたいくつかの共通属性抽出方法、とすることができる初期化するために使用されます。

// 构造函数中是不需要return的
// 抽象了对象的公共部分,封装到了函数里面,泛指一大类(class)
function Person(name) {
    this.name = name;
    this.sayHi = function (say) {
        console.log(say);
    }
}
// 特指某一个,通过 new 关键字创建对象的过程也称对象实例化
var zs = new Person('zs');
console.log(zs.name);
zs.sayHi('Hi~');
// new 执行过程
// 1, 在内存中创建一个空对象
// 2, 让 this 指向这个新对象
// 3, 执行构造函数里面的代码,给这个新对象添加属性和方法
// 4, 返回这个对象

オブジェクトをトラバース

var obj = {
    uname: 'red',
    say: function () {
        console.log('Hi');
    }
}
// 遍历对象
for (var k in obj) {
    console.log(k); // 输出键;uname, say
    console.log(obj[k]); // 输出值;red, function
}

JavaScriptが組み込みオブジェクト

数学

Math.PI; // 返回圆周率
Math.max(1, 2); // 返回最大值,非数字返回NaN, 空返回 -infinity
Math.min(1, 2); // 返回最小值,非数字返回NaN, 空返回 infinity
Math.abs(1); // 绝对值 字符串型数字会隐式转换,非数字返回 NaN
Math.floor(1.9); // 向下取整;
Math.ceil(1.1); // 向上取整;
Math.round(1.5); // 四舍五入;
Math.random(); // 随机数 0~1 不包含1
// 案例 任意两个数之间的随机值,包含最大值
function getRandom(max, min) {
    return Math.floor(Math.random() * (max - min + 1) + min);
}

日付

// date 是构造函数 要通过new来创建实例
var date = new Date(); // 默认输出当前系统时间 2020-03-25T14:45:05.347Z
var date = new Date('2019-10-1 8:8:8') // 可以设置时间注意格式 2019-10-01T00:08:08.000Z
方法 説明
getFullYear(); 現在の年を取得
getMonth(); 現在の月(0--11)を取得します
getDate(); 現在の日付を取得
getDay(); 現在の週を取得(日曜日0)
getHours(); 現在の時間を取得します。
getMinutes(); 現在の分を取得します。
getSeconds(); 現在の秒を取得します。

タイムスタンプを取得し、

var date = new Date();
date.valueOf();
date.getTime();
// 简单写法
var date1 = +new Date();
// H5 新增方法
Date.now();

アレイ

検出アレイであります

var arr = [];
console.log(arr instanceof Array);  // true false
console.log(Array.isArray(arr)); // true false  H5 新增 IE9+

削除配列要素を追加します。

メソッド名 説明 返却値
arr.push(1, 2); 最後に追加される一つ以上の元素は、元の配列を変更します 新しい長さを返します。
arr.pop(); 元の配列を変更し、要素を削除終了 戻り値の要素を削除します
arr.unshift(1, 2); 一つ以上の要素を追加し始め、元の配列を変更 新しい長さを返します。
arr.shift(); 元の配列を変更する、要素を削除開始 戻り値最初の要素は削除されます

配列のソート方法

方法 説明 返却値
reverse(); フリップアレイ フリップは、配列を完了しました
sort(); 配列のソートができますが、特別な処理を必要とする以上の2桁の要素が発生した場合 ソートされた完全な配列
// **以上两个方法会修改原数组**
var arr = [13, 44, 2, 1, 0];
arr.sort(function (a, b) {
	// return a - b; // 升序排列
    return b - a; // 降序排列
});

配列のインデックス方法

メソッド名 説明 返却値
indexOf(); 配列内の特定の要素を探す最初のインデックス 存在しない場合は、インデックス番号を返します-1
lastIndexOf(); 配列の最後のインデックス 存在しない場合は、インデックス番号を返します-1
var arr = ['pink', 'red', 'bule', 'red'];
console.log(indexOf('red')); // 1 从前面开始找只找一个
console.log(lastIndexOf('red')); // 3
// 数组去重
function unique(arr) {
    var newArr = [];
    for (var i = 0; i < arr.length; i++) {
        if (newArr.indexOf(arr[i]) === -1) {
            newArr.push(arr[i]);
        }
    }
    return newArr;
}

おすすめ

転載: www.cnblogs.com/article-record/p/12571775.html