0-juzga si se inicializan las variables y los parámetros
if (x) {} // La variable se inicializa o la variable no está vacía o la variable no es ceroLa función de 1 declaración no requiere una declaración de valor de retorno o tipo de parámetro, y el final de la oración ni siquiera requiere ';'
función suma (i1, i2) {return i1+i2}Declarar 2 directas las funciones anónimas para usar inmediatamente
var f = función (i1, i2) {return i1+i2;}; alerta (f (1,2)); // Alerta de función anónima ordinaria (función (i1, i2) {return i1+i2;} (3,4)); // declare directamente, use inmediatamente3-JS no tiene un concepto de clase, por lo que algunos métodos parecen clases
Función Persona (nombre, edad) {this.name = name; // Dynamicly Agregar atributos, similar a la dinámica A en C#. A = nuevo ExpendoObject (); this.age = edad; this.sayhello = function () {alerta ('Hola, mi nombre es'+nombre+'soy'+edad+'años de edad.')};} var p1 = nueva persona ('letry', 21); p1.sayhello (); // llamar p1.gender = 'masculino' como una clase; // dinámicamente agregue la alerta de atributo 'género' (p1.gender);Los objetos de 4 array son matrices, y no necesita precalificar la longitud de la matriz.
var arr = new Array (); arr [0] = 0; arr [1] = 1; arr [2] = 2; for (var i = 0; i <= arr.length-1; i ++) {alert (arr [i]);}5-array es una matriz, también un diccionario y también una pila
var dict = new array (); // como diccionario, use dict ['i'] = 'wo'; dict ['love'] = 'ai'; dict ['you'] = 'ni'; alert (dict [i ']); // llamar alert (dict.love); // llamar como atributos de llamadas (características del lenguaje dinámico) para (var k en dict) {// viajar alerta (k); // 'i', 'amor', 'usted'-> Key de imprimación} para (var k de dict) {// Travel Alert (k); // 'wo', 'ai', 'ni'-> valor de impresión} var arr = [1,2,3,4,5]; // método de creación simplificado de la matriz var arr = {"lorry": 21, "nube": 20}; // Diccionario Método de creación de estilo Diccionario6 Transferencia Todos los elementos que se pueden llamar en la página actual
var s = null; for (var k en documento) {// Las propiedades del objeto son s+= k+";";} alert (s);Operaciones de subíndice de 7 usos similares a la matriz para obtener caracteres en una posición especificada de la cadena
var s = 'Hola, mundo!'; s [0]; // 'H [6]; // '' s [12]; // '!' s [13]; // Los índices indefinidos fuera del rango no informarán un error, pero siempre devolverán indefinidos. Cabe señalar que la cadena es inmutable. Si asigna un valor a un cierto índice de la cadena, no habrá errores, pero no hay efecto: var s = 'test'; s [0] = 'x'; alerta (s); // s sigue siendo 'prueba'
Minúscula de 8 cápsulas
var s = 'Hola'; S.ToupperCase (); // devolver 'hola' var s = 'hello'; s.tolowercase (); // Devuelve 'Hola'
9-búsqueda para la ubicación donde aparece la cadena especificada
var s = 'hola, mundo'; s.indexof ('mundo'); // devolver 7s.indexof ('mundo'); // no se encontró una subcadena especificada, retorno -1Subvorias de 10 get del intervalo de índice especificado de cadena
var s = 'Hola, World'ss.substring (0, 5); // Comience desde el índice 0 a 5 (excluyendo 5), devuelva 'Hello's.substring (7); // Comience desde el índice 7 hasta el final, regrese 'mundo'
El objeto 11-JavaScript es un tipo de datos de recopilación desordenado, que consta de varios pares de valor clave.
var xiaoming = {nombre: 'xiaoming', nacimiento: 1990, escuela: 'n. ° 1 escuela secundaria', altura: 1.70, peso: 65, puntaje: nulo // El último par de valores clave no necesita ser agregado ','}; xiaoming.name; // 'xiaoming'xiaoming.birth; // 1990 El acceso al atributo se realiza a través del. Operador, pero esto requiere que el nombre del atributo sea un nombre de variable válido. Si el nombre del atributo contiene caracteres especiales, debe estar encerrado con []: var xiaoHong = {name: 'xiaohong', 'escolar de mediana edad': 'No.1 de la escuela secundaria'}; xiaohong ['middle-school']; // 'No.1 Middle School'xiaoHong [' Nombre ']; // 'xiaohong'xiaohong.name; // 'xiaohong'xiaohong.age; // indefinido12 Para detectar si Xiaoming tiene un cierto atributo, use el operador en:
'Nombre' en Xiaoming; // True'grade 'en Xiaoming; // Falso *** Si se determina que existe una propiedad, esta propiedad puede no ser Xiaoming, puede ser heredada por Xiaoming:' ToString 'en Xiaoming; // VERDADERO *** Para determinar si una propiedad es propiedad de Xiaoming, no heredada, puede usar el método de iSownProperty (): xiaoming.hasownproperty ('nombre'); // truexiaoming.hasownproperty ('toString'); // FALSO13 mapas
var m = nuevo mapa ([['Michael', 95], ['Bob', 75], ['Tracy', 85]]); // Método de inicialización de matriz 2d M.Get ('Michael'); // 95 var m = new Map (); // Inicializar directamente un mapm.set vacío ('Adam', 67); // Agregar una nueva clave-valuem.set ('bob', 59); M.Has ('Adam'); // si la clave 'Adam': Truem.get ('Adam'); // 67m.delete ('Adam'); // Eliminar la tecla 'Adam'met (' Adam '); // Undefined var m = nuevo mapa ([[1, 'x'], [2, 'y'], [3, 'z']]); para (var n de m) {// alert de mapa traverse (n [1] + '=' + n [0]);}Método foreach incorporado de 14 citerable, que recibe una función y devuelve automáticamente cada iteración.
var a = ['a', 'b', 'c']; A.ForEach (function (elemento, índice, matriz) {// elemento: apunte al valor del elemento actual // índice: apunte al índice actual // matriz: apunte al objeto de matriz en sí alerta (elemento);}); SET es similar a la matriz, pero SET no tiene un índice, por lo que la función de devolución de llamada tiene un máximo de dos parámetros: var s = new Set (['a', 'b', 'c']); S.ForEach (function (elemento, set) {alerta (elemento);}); Los parámetros de la función de devolución de llamada del mapa son valor, clave y mapa en sí: var m = nuevo map ([1, 'x'], [2, 'y'], [3, 'z']]); M.Foreach (function (valor, clave, map) {alerta (valor);}); var a = ['a', 'b', 'c']; a.forEach (function (elemento) {alerta (elemento);});Método MAP () de 15 de uso de uso de 15, pase en nuestra propia función y obtendrá una nueva matriz como resultado:
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]; arr.map (función (x) {return x*x;}). foreach (función (elemento) {alerta (elemento); // [1, 4, 9, 16, 25, 36, 49, 64, 81]});16-Use MAP () para convertir todos los números en la matriz en cadenas:
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]; arr.map (cadena); // ['1', '2', '3', '4', '5', '6', '7', '8', '9']
17-Use la matriz reduce () para hacer cálculos acumulativos
var arr = []; for (var x = 1; x <= 100; x ++) {arr.push (x); // Pon 1 ~ 100 en una matriz} alerta (arr.reduce (function (x, y) {return x+y; // suma acumulativa de todos los objetos de arr, devuelve el resultado de la suma}));18-Use reduce () para hacer una conversión increíble: convertir [1, 2, 5, 8, 0] en entero 12580
var arr = [1, 2, 5, 8, 0]; alerta (arr.reduce (función (x, y) {return x*10+y;}));Filtro de uso 19 () para filtrar ciertos elementos de matriz
var arr = [0,1,2,3,4,5,6,7,8,9]; alerta (arr.filter (function (x) {return x%2 === 0;})); // 0,2,4,6,8 // return true, mantenga la eliminación de la cadena vacía en una matriz var arr = ['a', ',' b ', null, sinfinado,' c ',', ',', ',', ', ']; alert (arr.filter (function (s) {return s && s.trim (); // nota: no hay método trim () en las versiones a continuación IE9})); // ['A', 'B', 'C']El método Sort () de 20-array convierte todos los elementos en cadena primero y luego lo clasifica, así que ...
[10, 20, 1, 2] .sort (); // [1, 10, 2, 20] Entonces, si desea ordenar por tamaño de número, puede escribir esto: var arr = []; for (var x = 1; x <= 10; x ++) {arr.push (x);} document.write (arr+"<br/>"); document.write (arr.sort (función (x, y) {return x <y? Verdadero; falso;}))); Para ignorar la influencia de las letras, primero debe convertirse en mayúsculas o minúsculas Var arr = ['Google', 'Apple', 'Microsoft']; alert (arr.sort (function (s1, s2) {var x1 = s1.toupperCase (); var x2 = s2.ToUpperPercase (); return x1 <x2?}); // ['Apple', 'Google', 'Microsoft']Estructura del programa de 21 cierres
① Asigne la función como el valor de retorno al parámetro, llame al parámetro para obtener el resultado de cálculo var arr = []; for (var n = 1; n <101; n ++) {arr.push (n);} function lazy_sum (arr) {var sum = function () {return arr.reduce (function (x, y) {return x+y;}); } suma de retorno;} var f = lazy_sum (arr); alert (f ()); ② La función devuelta no se ejecuta de inmediato, pero no se ejecuta hasta que f () se llama function count () {var arr = []; for (var i = 1; i <= 3; i ++) {arr.push (function () {return i * i;}); } return arr;} var resultados = count (); // Hay 3 funciones para f1 = resultados [0]; var f2 = resultados [1]; var f3 = resultados [2]; f1 (); // 16 La función devuelta se refiere a la variable I, pero no se ejecuta de inmediato. f2 (); // 16 Cuando las tres funciones regresan, la variable a la que mencioné se ha convertido en 4, f3 (); // 16 Por lo tanto, el resultado final es 16 *** Al devolver el cierre, recuerde: ¡no se refiera a ninguna variable de bucle o variables que cambiarán en el futuro! ③ ¿Qué pasa si debe consultar las variables de bucle? El método es crear otra función y usar los parámetros de la función para unir el valor actual de la variable de bucle. Independientemente de cómo cambia la variable de bucle en el tiempo posterior, el valor unido al parámetro de función permanece sin cambios: function count () {var arr = []; for (var i = 1; i <= 3; i ++) {arr.push (function (n) {return function () {return n*n;}} (i)); } return arr;} var resultados = count (); var f1 = resultados [0]; var f2 = resultados [1]; var f3 = resultados [2]; alerta (f1 ()); // 1Alert (f2 ()); // 4alert (f3 ()); // 9 ④ En idiomas sin mecanismo de clase y solo función, con la ayuda de cierres, una variable privada puede ser encapsulada de la función create_counter (init) {var n = init || 0; return {add: function () {n+= 1; regresar n; }}} var c = create_counter (); alert (c.add ()); // 1alert (c.add ()); // 2alert (c.add ()); // 3 *** En el objeto devuelto, se implementa un cierre, que lleva la variable local N, y la variable n no se puede acceder desde el código externo en todo. En otras palabras, un cierre es una función que lleva a los estados, y su estado puede estar completamente oculto desde el exterior. ⑤ Use Math.Pow (x, y) para calcular x^2 o x^3 //math.pow(x, y)-> x^yfunction make_pow (y) {return function (x) {return math.pow (x, y); }} var pow2 = make_pow (2) var pow3 = make_pow (3) alerta (pow2 (3)) // 9alert (pow3 (3)) // 27Función 22-Arrow (actualmente solo compatible con Firefox) // Parámetros => Cuerpo de funciones
var f = x => x*xxxalert (f (3)) // 27
23 generador para generar secuencias Fibonacci
función* fib (max) {var t, a = 0, b = 1, n = 1; while (n <= max) {rendimiento a; t = a+b; a = b; b = t; n ++; } return a;} para (var x de fib (10)) {// iterar el objeto del generador documento.write (x+''); // Salida 0, 1, 1, 2, 3} Use el generador para generar una ID de autoincremental (no se requiere variable global) función* next_id () {for (var x = 1; x <100; rendimiento x ++);} var g = next_id (); alerta (g.next (). Valor); // 1alert (g.next (). Valor); // 2alert (g.next ().);Lo anterior es el contenido completo de las notas de autoestudio de JavaScript (artículo de lectura imprescindible) que el editor le presenta. Espero que todos apoyen a Wulin.com más ~