Maison > interface Web > js tutoriel > le corps du texte

Définitions et méthodes courantes JavaScript

巴扎黑
Libérer: 2017-06-26 15:02:01
original
1335 Les gens l'ont consulté

1. Certaines méthodes de chaîne courantes. Notez que l'appel de ces méthodes ne modifiera pas le contenu de la chaîne d'origine, mais renverra une nouvelle chaîne.
toUpperCase()
Convertir une chaîne en majuscules :

var s = 'Hello';
s.toUpperCase(); // 返回'HELLO'
Copier après la connexion


toLowerCase()
Convertir une chaîne en minuscules :

var s = 'Hello';var lower = s.toLowerCase(); // 返回'hello'并赋值给变量lowerlower; // 'hello'
Copier après la connexion


indexOf()
recherchera la position où apparaît la chaîne spécifiée :

var s = 'hello, world';
s.indexOf('world'); // 返回7s.indexOf('World'); // 没有找到指定的子串,返回-1
Copier après la connexion


substring()
renvoie la sous-chaîne de la plage d'index spécifiée :

var s = 'hello, world's.substring(0, 5); // 从索引0开始到5(不包括5),返回'hello's.substring(7); // 从索引7开始到结束,返回'world'
Copier après la connexion


2 Méthodes de tableau courantes
indexOf()
pour rechercher Le. position d'un élément spécifié

var arr = [10, 20, '30', 'xyz'];
arr.indexOf(10); // 元素10的索引为0arr.indexOf(20); // 元素20的索引为1arr.indexOf(30); // 元素30没有找到,返回-1arr.indexOf('30'); // 元素'30'的索引为2
Copier après la connexion


slice()
intercepte certains éléments du tableau, puis renvoie un nouveau tableau :

var arr = ['A', 'B', 'C', 'D', 'E', 'F', 'G'];
arr.slice(0, 3); // 从索引0开始,到索引3结束,但不包括索引3: ['A', 'B', 'C']arr.slice(3); // 从索引3开始到结束: ['D', 'E', 'F', 'G']
Copier après la connexion

Notez que les paramètres de début et de fin de slice() incluent l'index de début et n'incluent pas l'index de fin.
Si vous ne transmettez aucun paramètre à slice(), il interceptera tous les éléments du début à la fin. En profitant de cela, nous pouvons facilement copier un Array.

push et pop
push() ajoute plusieurs éléments à la fin du tableau, et pop() supprime le dernier élément du tableau :

var arr = [1, 2];
arr.push('A', 'B'); // 返回Array新的长度: 4arr; // [1, 2, 'A', 'B']arr.pop(); // pop()返回'B'arr; // [1, 2, 'A']arr.pop(); arr.pop(); arr.pop(); // 连续pop 3次arr; // []arr.pop(); // 空数组继续pop不会报错,而是返回undefinedarr; // []
Copier après la connexion


unshift et shift

var arr = [1, 2];
arr.unshift('A', 'B'); // 返回Array新的长度: 4arr; // ['A', 'B', 1, 2]arr.shift(); // 'A'arr; // ['B', 1, 2]arr.shift(); arr.shift(); arr.shift(); // 连续shift 3次arr; // []arr.shift(); // 空数组继续shift不会报错,而是返回undefinedarr; // []
Copier après la connexion

sort
trie le tableau actuel Il modifiera directement la position de l'élément du tableau actuel. Lorsqu'il est appelé directement, il sera trié. dans l'ordre par défaut. :

var arr = ['B', 'C', 'A'];
arr.sort();
arr; // ['A', 'B', 'C']
Copier après la connexion

inverse
Supprimez tous les éléments de l'ensemble du tableau, c'est-à-dire inverse :

var arr = ['one', 'two', 'three'];
arr.reverse();
arr; // ['three', 'two', 'one']
Copier après la connexion


splice
Modifier la "méthode universelle" de Array, qui peut supprimer plusieurs éléments à partir de l'index spécifié, puis ajouter plusieurs éléments à partir de cette position

var arr = ['Microsoft', 'Apple', 'Yahoo', 'AOL', 'Excite', 'Oracle'];// 从索引2开始删除3个元素,然后再添加两个元素:arr.splice(2, 3, 'Google', 'Facebook'); // 返回删除的元素 ['Yahoo', 'AOL', 'Excite']arr; // ['Microsoft', 'Apple', 'Google', 'Facebook', 'Oracle']// 只删除,不添加:arr.splice(2, 2); // ['Google', 'Facebook']arr; // ['Microsoft', 'Apple', 'Oracle']// 只添加,不删除:arr.splice(2, 0, 'Google', 'Facebook'); // 返回[],因为没有删除任何元素arr; // ['Microsoft', 'Apple', 'Google', 'Facebook', 'Oracle']
Copier après la connexion


concat
concatène le tableau actuel avec un autre tableau et renvoie un nouveau tableau

var arr = ['A', 'B', 'C'];var added = arr.concat([1, 2, 3]);
added; // ['A', 'B', 'C', 1, 2, 3]arr; // ['A', 'B', 'C']
Copier après la connexion


join

var arr = ['A', 'B', 'C', 1, 2, 3];
arr.join('-'); // 'A-B-C-1-2-3'
Copier après la connexion


3. Objet
Étant donné que les objets JavaScript sont typés dynamiquement, vous pouvez librement ajouter ou supprimer des attributs à un objet :

var xiaoming = {
    name: '小明'};
xiaoming.age; // undefinedxiaoming.age = 18; // 新增一个age属性xiaoming.age; // 18delete xiaoming.age; // 删除age属性xiaoming.age; // undefineddelete xiaoming['name']; // 删除name属性xiaoming.name; // undefineddelete xiaoming.school; // 删除一个不存在的school属性也不会报错
Copier après la connexion


Pour détecter si xiaoming a un certain attribut, vous pouvez utiliser l'opérateur in :

var xiaoming = {
    name: '小明',
    birth: 1990,
    school: 'No.1 Middle School',
    height: 1.70,
    weight: 65,
    score: null};'name' in xiaoming; // true'grade' in xiaoming; // false
Copier après la connexion

Mais attention, si in détermine qu'un attribut existe, cet attribut n'est pas forcément xiaoming Oui, elle peut être héritée par xiaoming :
Pour déterminer si une propriété appartient à xiaoming lui-même plutôt qu'héritée, vous pouvez utiliser la méthode hasOwnProperty() :

var xiaoming = {
    name: '小明'};
xiaoming.hasOwnProperty('name'); // truexiaoming.hasOwnProperty('toString'); // false
Copier après la connexion


La norme ES6 introduit un nouveau type de données Map, Set

var m = new Map([['Michael', 95], ['Bob', 75], ['Tracy', 85]]);
m.get('Michael'); // 95var s1 = new Set(); // 空Setvar s2 = new Set([1, 2, 3]); // 含1, 2, 3
Copier après la connexion


La norme ES6 introduit un nouveau type itérable (peut être substitué)
Array , Map et Set appartiennent tous au type itérable.
Parcourir

var a = ['A', 'B', 'C'];var s = new Set(['A', 'B', 'C']);var m = new Map([[1, 'x'], [2, 'y'], [3, 'z']]);for (var x of a) { // 遍历Array    alert(x);
}for (var x of s) { // 遍历Set    alert(x);
}for (var x of m) { // 遍历Mapalert(x[0] + '=' + x[1]);
}
Copier après la connexion


à travers une nouvelle boucle for...of 4. Fonction
Arguments de mots-clés gratuits, qui sont uniquement à l'intérieur de la fonction Fonctionne et toujours pointe vers tous les paramètres transmis par l’appelant de la fonction actuelle. arguments est comme Array mais ce n'est pas un Array.

function foo(x) {
    alert(x); // 10for (var i=0; i<arguments.length; i++) {
        alert(arguments[i]); // 10, 20, 30    }
}
foo(10, 20, 30);
Copier après la connexion


Max est un débutant en JavaScript. Il a écrit une fonction max() qui renvoie le plus grand des deux nombres :

document.write(Math.max(7.25,7.30));
Copier après la connexion


5. Portée de la variable
ES6 introduit le nouveau mot-clé let. Utilisez let au lieu de var pour déclarer une variable au niveau du bloc

&#39;use strict&#39;;function foo() {var sum = 0;for (let i=0; i<100; i++) {
        sum += i;
    }
    i += 1; // SyntaxError}
Copier après la connexion


La norme ES6 introduit le nouveau mot-clé const pour définir des constantes. Const et let ont une portée au niveau du bloc

const PI = 3.14;
PI = 3; // 某些浏览器不报错,但是无效果!PI; // 3.14
Copier après la connexion


6 .Fonction avancée
La carte ( ) est définie dans JavaScript Array. Nous appelons la méthode map() de Array, transmettons notre propre fonction et obtenons un nouveau Array comme résultat.

function pow(x) {return x * x;
}var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
arr.map(pow); // [1, 4, 9, 16, 25, 36, 49, 64, 81]
Copier après la connexion


reduce() applique une fonction à [x1, x2, x3...] de ce tableau Cette fonction doit recevoir deux paramètres, réduire() Continuer. le calcul cumulatif du résultat avec l'élément suivant de la séquence. L'effet est :

[x1, x2, x3, x4].reduce(f) = f(f(f(x1, x2), x3), x4)var arr = [1, 3, 5, 7, 9];
arr.reduce(function (x, y) {return x + y;
}); // 25
Copier après la connexion


le filtre est également une opération couramment utilisée, qui est utilisée pour convertir un tableau. Certains éléments sont filtrés et les éléments restants sont renvoyés.
Appliquez la fonction transmise à chaque élément tour à tour, puis décidez de conserver ou de supprimer l'élément selon que la valeur de retour est vraie ou fausse.
Par exemple, dans un Tableau, supprimez les nombres pairs et ne gardez que les nombres impairs

var arr = [1, 2, 4, 5, 6, 9, 10, 15];var r = arr.filter(function (x) {return x % 2 !== 0;
});
r; // [1, 5, 9, 15]
Copier après la connexion


Pour supprimer les chaînes vides dans un Tableau, vous pouvez écrire :

var arr = [&#39;A&#39;, &#39;&#39;, &#39;B&#39;, null, undefined, &#39;C&#39;, &#39;  &#39;];var r = arr.filter(function (s) {return s && s.trim(); // 注意:IE9以下的版本没有trim()方法});
r; // [&#39;A&#39;, &#39;B&#39;, &#39;C&#39;]
Copier après la connexion


Fonction anonyme (fonction sans nom de fonction)

var friends = ["Mike", "Stacy", "Andy", "Rick"];

friends.forEach(function (eachName, index){
console.log(index + 1 + ". " + eachName); // 1. Mike, 2. Stacy, 3. Andy, 4. Rick});
Copier après la connexion


algorithme de tri

// 看上去正常的结果:[&#39;Google&#39;, &#39;Apple&#39;, &#39;Microsoft&#39;].sort(); // [&#39;Apple&#39;, &#39;Google&#39;, &#39;Microsoft&#39;];// apple排在了最后:[&#39;Google&#39;, &#39;apple&#39;, &#39;Microsoft&#39;].sort(); // [&#39;Google&#39;, &#39;Microsoft", &#39;apple&#39;]// 无法理解的结果:[10, 20, 1, 2].sort(); // [1, 10, 2, 20]
Copier après la connexion


第二个排序把apple排在了最后,是因为字符串根据ASCII码进行排序,而小写字母a的ASCII码在大写字母之后。
第三个排序结果是什么鬼?简单的数字排序都能错?
这是因为Array的sort()方法默认把所有元素先转换为String再排序,结果'10'排在了'2'的前面,因为字符'1'比字符'2'的ASCII码小。

7闭包
高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回

function lazy_sum(arr) {var sum = function () {return arr.reduce(function (x, y) {return x + y;
        });
    }return sum;
}
Copier après la connexion


当我们调用lazy_sum()时,返回的并不是求和结果,而是求和函数:

var f = lazy_sum([1, 2, 3, 4, 5]); // function sum()
Copier après la connexion

调用函数f时,才真正计算求和的结果:

f(); // 15
Copier après la connexion


在函数lazy_sum中又定义了函数sum,并且,内部函数sum可以引用外部函数lazy_sum的参数和局部变量,当lazy_sum返回函数sum时,相关参数和变量都保存在返回的函数中,这种称为“闭包(Closure)”的程序结构拥有极大的威力。

请再注意一点,当我们调用lazy_sum()时,每次调用都会返回一个新的函数,即使传入相同的参数:

var f1 = lazy_sum([1, 2, 3, 4, 5]);var f2 = lazy_sum([1, 2, 3, 4, 5]);
f1 === f2; // false
Copier après la connexion

f1()和f2()的调用结果互不影响。

8.箭头函数
ES6标准新增了一种新的函数:Arrow Function(箭头函数)。
为什么叫Arrow Function?因为它的定义用的就是一个箭头:
x => x * x
上面的箭头函数相当于:

function (x) {return x * x;
}
Copier après la connexion


generator(生成器)是ES6标准引入的新的数据类型。一个generator看上去像一个函数,但可以返回多次。

function* foo(x) {
    yield x + 1;
    yield x + 2;return x + 3;
}
Copier après la connexion

函数在执行过程中,如果没有遇到return语句(函数末尾如果没有return,就是隐含的return undefined;),控制权无法交回被调用的代码。









Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Recommandations populaires
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal