Tài Liệu Bách Khoa Tp Hcm

     

Các điểm nổi bật trong cú pháp của ES6 | cách tân và phát triển ứng dụng đa căn nguyên - Sharing


Trong cải tiến và phát triển ứng dụng đa gốc rễ các các bạn sẽ được đề cập tới 2 framework đa nền tảng gốc rễ mobile danh tiếng nhất bây giờ đó là React Native cùng Flutter. Với React Native việc nắm vững Javascript và đa số cú pháp bắt đầu trong ES6 là điều rất yêu cầu thiết. Trong bài viết này mình muốn viết về những điểm khác biệt trong cú pháp của ES6, bài viết được xem thêm trong chương 4, phần 1.2 của slide bài giảng cải cách và phát triển ứng dụng đa nền tảng gốc rễ sẽ được chia sẻ ở những bài viết sau trên blog của chính bản thân mình và đang được bổ sung và sửa đổi một vài kiến thức cho tương đối đầy đủ hơn.

Bạn đang xem: Tài liệu bách khoa tp hcm


*

Từ khóa let cùng const

Trong ES5, họ định nghĩa 1 biến áp dụng từ khóa var, phạm vi của biến đổi khi sử dung var để khai báo đã chỉ gồm 2 trường thích hợp là global hoặc local. Khi chúng ta định nghĩa biến ko kể một hàm thì nó là biến hóa global, còn khi chúng ta định nghĩa đổi thay ở bên trong hàm thì nó là 1 biến local.

Trong ES6 ra mắt cho họ một từ khóa let giúp cho việc khai báo biến hóa chạy vào một block (block ở đây được hiểu như thể giới hạn vào 2 vệt "")

Ví dụ:


let x = 10;if (x == 10) let x = 20; console.log(x); // 20: reference x inside the blockconsole.log(x); // 10: reference at the begining of the script
Chúng ta rất có thể thấy biến đổi x được khai báo new trong block if trọn vẹn được khai báo new chứ không hề liên quan tiền gì tới biến đã được khai báo làm việc ngoài. Vấn đề này cũng giúp họ tránh nhầm lẫn trong việc sử dụng tên phát triển thành hơn cùng cũng giúp Javascript sát hơn với những ngôn ngữ khác.

ES6 cũng cung ứng một biện pháp định nghĩa hằng số thực hiện const. Const keyword dùng làm định nghĩa các biến chỉ đọc với tham chiếu cho tới một giá bán trị.

Các vươn lên là được khai báo vị từ khóa let là mutable (có thể nạm đổi), còn những biến khai báo vì từ khóa const là immutable (không thể vậy đổi).

Vòng lặp for...of

Cú pháp bắt đầu for...of góp lặp một cách thuận tiện hơn trên những đối tượng rất có thể lặp lại như là: mảng, string, map, set,...

Ví dụ:


let scores = <80, 90, 70>;for (let score of scores) score = score + 5; console.log(score);

Template literals

Trước ES6, họ sử dụng lốt ngoặc solo (") cùng ngoặc kép (") để biểu lộ cho string javascript, và string bị giới hạn tương đối nhiều chức năng.

Với template literals bạn có thể làm nhiều hơn thế với một string như là:

- Khai báo và áp dụng string hoàn toàn có thể kéo lâu năm trên các dòng

- tiến hành nội suy chất nhận được nhúng các biến hoặc biểu thức vào chuỗi

- bình yên khi chèn vào các mã HTML

Template literals được đặt trong 2 dấu (``), ví dụ:


let str = `Template literal in ES6`;console.log(str);// Template literal in ES6console.log(str.length); // 23console.log(typeof str);// string

Arrow Function

Cú pháp mũi thương hiệu (=>), đây như là 1 trong những cách viết gọn gàng hàm lại. Ví dụ với một hàm thông thường như sau:


let địa chỉ = function (x, y) return x + y;;console.log(add(10, 20)); // 30
Chúng ta có thể viết gọn lại với cú pháp của arrow function như sau:


let địa chỉ cửa hàng = (x, y) => x + y;console.log(add(10, 20)); // 30;
Một số ngôi trường hợp chúng ta cũng có thể viết gọn gàng lại hơn thế nữa arrow function, khi danh sách tham số chỉ gồm 1, bạn có thể bỏ qua vệt ngoặc đơn:


(singleParam) => statements singleParam => statements
Tuy nhiên trường hợp hàm không tồn tại tham số thì cặp dấu ngoặc 1-1 là bắt buộc sử dụng:


() => statements
Nếu chỉ có một biểu thức trong văn bản của arrow function thì chúng ta có thể bỏ qua dấu ngoặc nhọn:


let square = x => x * x;

Giá trị mang định cho tham số

Ví dụ:


function say(message="Hi") console.log(message);say(); // "Hi"say("Hello") // "Hello"

Xây dựng những Class


Trước ES6, Javascript không tồn tại khái niệm về class, nhưng để bắt chước một class thì bạn có thể sử dụngconstructor/prototype pattern.
Ở ES6, định nghĩa class vẫn được reviews và đây chắc chắn là hầu như tin vui cho rất nhiều ai tín đồ của phía đối tượng:


class Person constructor(name) this.name = name; getName() return this.name;

Module

- từng module được trình diễn bằng một thẻ .js riêng biệt

- Lệnh import hoặcexport trong một module để xuất hoặc nhập các biến, hàm, class hoặc bất kể một thực thể nào tới từ một module hoặc tệp khác

Ví dụ, sản xuất một file message.js tất cả nội dung như sau:


export let message = "ES6 Modules";
Để thực hiện biến message trong một file khác, bạn cũng có thể sử dụng cú pháp import như sau:


import message from "./message.js"

Rest Parameters

- Truyền vào lượng thông số tùy ý cho hàm bên dưới dạng mảng

- chế tạo phía trước thông số toán từ ... (dấu bố chấm)


function sortNumbers(...numbers) return numbers.sort();console.log(sortNumbers(3, 5, 7));console.log(sortNumbers(3, 5, 7, 1, 0));

Toán tử Spread

Toán tử spread (tức là phân tách nhỏ) một mảng cùng chuyển các giá trị vào hàm được chỉ định.


const odd = <1,3,5>;const combined = <2,4,6, ...odd>;console.log(combined);// => output: < 2, 4, 6, 1, 3, 5 >
function f(a, b, ...args) console.log(args);f(1, 2, 3, 4, 5);// => output: < 3, 4, 5 >

Phép gán diệt cấu trúc

Biểu thức giúp tiện lợi trích xuất các giá trị tự mảng hoặc trực thuộc tính từ các đối tượng, thành các biến riêng biệt biệt bằng cách cung cấp một cú pháp ngắn gọn.


let colors = <"Xanh", "Đỏ">;let = colors;
Tham khảo:https://www.javascripttutorial.net/es6/


Read More

chuyennganhcntt / cntt / javascript / cốt truyện / soict / web

No Comments



Thuật toán pagerank xếp hạng thứ thị | Ôn tập khai phá web


Pagerank là thuật toán xếp hạng đồ gia dụng thị dựa trên cấu tạo tổng quát, họ có cách để tính được đúng đắn thứ hạng của từng đỉnh, mặc dù khi số đỉnh càng lớn, việc tính toán đúng là điều tạo mất thời gian và không đề xuất thiết. Trong bài viết này mình sẽ giải đáp 3 cách để xếp hạng những đỉnh mang lại đồ thị (mình điện thoại tư vấn nhanh là 3 thuật toán pagerank). Về định hướng thì các bạn cũng có thể xem slide bài xích giảng của những thầy/ côTẠI ĐÂY.

Đề bài: cho một đồ thị tất cả 3 đỉnh cùng quan hệ giữa những đỉnh như hình dưới, với d = 1 (damping factor) hãy đo lường và thống kê thứ hạng của từng đỉnh.



Trong bài viết này mình xử lý với damping factor = 1, đấy là trường hợp dễ dàng nhất trong các trường hợp, với damping factor khác 1 mình sẽ có nội dung bài viết sau reviews lại, bởi damping factor không giống 1 họ cần lắm rõ triết lý và phương pháp một tí, tuy vậy thì cơ bản vẫn đang tương tự.

Xem thêm: Những Bức Tranh Vẽ Về Đề Tài An Toàn Giao Thông Đẹp Nhất


1. Tính đúng đắn pagerank bởi hệ phương trình

Ta bao gồm hệ phương trình sau:

$egincasesr_a = r_c\r_b = r_a / 2 \r_c = r_a / 2 + r_b và (1)\r_a + r_b + r_c = 1endcases$

Mình lý giải qua tại sao lại có hệ phương trình này nha, thứ nhất là tổng loại của toàn bộ các đỉnh lúc nào cũng bằng 1 rồi, vậy ta luôn có được phương trình sản phẩm công nghệ 4 là $r_a + r_b + r_c = 1$.

Tiếp theo nhằm giải được một hệ phương trình bao gồm 3 ẩn số thì ít nhất chúng ta phải buộc phải thêm 2 phương trình nữa, sinh sống đây họ sẽ cứ tìm ra hết các phương trình bao gồm thể.

Với phương trình đầu $r_a = r_c$, giả dụ viết rất đầy đủ thì đề nghị là $r_a = r_c / 1$, với CA là một trong cạnh của thứ thị với đỉnh C có một bậc ra. Cùng với phương trình thứ 2 $r_b = r_a / 2$, với AB là 1 cạnh của thiết bị thị và đỉnh A có 2 bậc ra. Với phương trình trang bị 3 $r_c = r_a / 2 + r_b$, cùng với AC, BC là 1 trong cạnh của đồ vật thị với A, B lần lượt có 2 và 1 bậc ra.

Tiếp theo câu hỏi giải phương trình này thì dễ rồi, chúng ta thay nuốm xuống phương trình cuối đang có:

$r_a + r_a / 2 + r_a / 2 + r_a / 2 = 1$

$=> r_a = 2 / 5, r_b = 1/5, r_c = 2 /5 $.

Chắc là cũng có rất nhiều bạn thắc mắc là giải dễ như vậy nguyên nhân lại buộc phải cách các xấp xỉ làm gì? Mình cũng trở thành giải thích luôn là đây chỉ cần ví dụ cùng với 3 đỉnh, trong các bài toán thực tế thì một đồ vật thị thường lên tới mức hàng triệu đỉnh thì việc giải HPT nhằm tìm ra máy hạng đúng là điều rất là khó khăn với không buộc phải thiết.

2. Tính xấp xỉ pagerank bởi thuật toán lặp

Để bắt đầu cách này trước hết chúng ta vẫn đề nghị tìm ra hệ phương trinh $(1)$ trước nha.

Sau đó ban đầu chúng ta khởi tạo giá trị vật dụng hạng mang lại từng đỉnh: $r_a(0) = r_b(0) = r_c(0) = 1/3$, bạn cũng có thể khởi tạo bất kỳ giá trị nào cũng khá được nha, nếu như khởi sinh sản hơi lỗi thì bọn họ sẽ phải mất nhiều lần lặp hơn new tìm ra được điểm hội tụ, còn nếu khởi tạo tốt thì có thể chỉ mất 1,2 vòng lặp. Kí hiệu $(0)$ phía sau mỗi $r_a, r_b, r_c$ để trình bày cho số vòng lặp, trong trường thích hợp khởi chế tạo thì số vòng sẽ lặp là 0.

+ Vòng 1:

$r_a(1) = r_c(0) / 1 = 1 / 3$

$r_b(1) = r_a(0) / 2 = 1 / 6$

$r_c(1) = r_a(0) / 2 + r_b(0) / 1 = 1 / 2$

+ Vòng 2:

$r_a(2) = r_c(1) / 1 = 1 /2$

$r_b(2) = r_a(1) / 2 = 1/ 6$

$r_c(2) = r_a(1) / 2 + r_b(1) / 1 = 1 /3$

+ Vòng 3:

$r_a(3) = r_c(2) / 1 = 1 / 3$

$r_b(3) = r_a(2) / 1 = 1/ 4$

$r_c(3) = r_a(2) / 2 + r_b(2) / 1 = 5 / 12$

+ Vòng 4:

$r_a(4) = r_c(3) / 1 = 5 / 12$

$r_b(4) = r_a(3) / 2 = 1 / 6$

$r_c(4) = r_a(3) / 2 + r_b(3) / 1 = 5 / 12$

+ Vòng ...

Lặp tới bao nhiêu vòng là tùy thuộc vào yêu cầu câu hỏi mà thầy/ cô giáo gửi ra, còn trên thực tế chúng ta sẽ lặp tới khi nào hội tụ, tức là khi mà lại vòng lặp sau hiệu quả không đổi so với hiệu quả trước hoặc là vậy đổi nhỏ dại hơn một số trong những denta rất nhỏ do họ định nghĩa ra trước.

3. Tính xấp xỉ pagerank bởi thuật toán lặp với ma trận

Lặp thủ công bằng tay như bí quyết 2 có thể khiến chúng ta rơi vào trầm cảm, bí quyết 3 này như là một trong những cách tóm gọn gàng lại của bí quyết 2 bởi ma trận vậy.

Đầu tiên vẫn luôn là khởi sản xuất giá trị ban sơ $r_a = r_b = r_c = 1 / 3$

Ta có ma trận:

$eginbmatrix0 & 50% & 1/2\0 và 0 và 1\1 & 0 và 0endbmatrix$

Ma trận này còn có được bằng cách lấy 1 chia hầu như cho số cạnh ra, ví dụ đỉnh A gồm 2 cạnh ra là AB với AC thì khớp ứng vị trí của ma trận là $eginbmatrix0 & 50% & 1/2endbmatrix$, tựa như với các đỉnh còn lại.

Xem thêm: Văn Khấn Thần Linh Ngày Rằm Mồng Một, Văn Khấn Rằm Mùng Một Hàng Tháng Chuẩn Nhất

+ Lặp vòng 1:

$eginbmatrix1/3 \ 1/3 \ 1/3endbmatrix * eginbmatrix0 & 50% & 1/2\0 & 0 & 1\1 & 0 & 0endbmatrix = eginbmatrix1/3 \ 1/6 \ 1/2endbmatrix$

+ Lặp vòng 2:

$eginbmatrix1/3 \ 1/6 \ 1/2endbmatrix * eginbmatrix0 & 1/2 & 1/2\0 và 0 và 1\1 và 0 và 0endbmatrix = eginbmatrix1/2 \ 1/6 \ 1/3endbmatrix$

+ Lặp vòng 3:

$eginbmatrix1/2 \ 1/6 \ 1/3endbmatrix * eginbmatrix0 & một nửa & 1/2\0 & 0 & 1\1 & 0 & 0endbmatrix = eginbmatrix1/3 \ 1/4 \ 5/12endbmatrix$

+ Lặp vòng 4:

$eginbmatrix1/3 \ 1/4 \ 5/12endbmatrix * eginbmatrix0 & một nửa & 1/2\0 và 0 & 1\1 & 0 và 0endbmatrix = eginbmatrix5/12 \ 1/6 \ 5/12endbmatrix$

Chúng ta rất có thể thấy sau 4 lần lặp, công dụng ở biện pháp 3 tương xứng với kết quả ở phương pháp 2.

Để nắm vững kiến thức, chúng ta nên tìm hiểu thêm slide, có tác dụng thêm các bài tập về pagerank, chúc mọi tín đồ học tập tốt!