freeCodeCamp là khoá học miễn phí cho tất cả mọi người, có thể giúp bạn xây dựng profile của bạn, cung cấp cho bạn chứng chỉ khi bạn hoàn tất.
Khoá học hiện đang cung cấp:
Font-End , Back-End , Full Stack, Data Visualization…
Trước khi bắt đầu các bài thử thách, bạn sẽ nhận được sự hướng dẫn đăng nhập đăng ký, sử dụng forum chat, tạo tài khoản GitHub,…
Hiện tại, mình bắt đầu với chứng chỉ Font-End Development của freeCodeCamp
Mình đã giải xong các phần HTML&CSS, Responsive Design with Bootstrap, jQuery, và project căn bản.
Bạn có thể tìm thấy hướng dẫn trong clip youtube này, khi mình làm thì mình không xem, mình biết nhiều khi bạn chỉ muốn lướt qua xem lời giải cho xong, tuỳ thuộc vào bạn thôi. Mình post để có thể giúp ích cho ai muốn tìm hiểu
Giờ mình đang theo phần Basic JavaScript.
https://youtu.be/PMfcsYzj-9M
Ở đây mình muốn viết lại các bài trên freeCodeCamp, do mình tổng kết và đút kết một số phần từ các bài học ở đó và tự nghiên cứu thêm tài liệu. Hy vọng topic này có thêm nhiều bạn cùng tham gia.
Những điểm lạ trong JS : xem youtube
https://youtu.be/Bv_5Zv5c-Ts
Global Scope và hàm Functions:
Giải bài toán :
khai báo biến myGlobal
biến myGlobal có giá trị bằng 10
sử dụng biến var keyword cho myGlobal
oopsGlobal phải cho kết quả là 5
// Khai báo biến
function fun1() {
// Gán giá trị 5 cho oopsGlobal}
// Giữ nguyên phẩn code dưới
function fun2() {
var output = “”;
if (typeof myGlobal != “undefined”) {
output += "myGlobal: " + myGlobal;
}
if (typeof oopsGlobal != “undefined”) {
output += " oopsGlobal: " + oopsGlobal;
}
console.log(output);
}
Scope trong Javascript đề cập đến khả năng hiển thị của các biến. Những biến được khai báo bên ngoài hàm block gọi là Global scope.
Điểm đặt vấn đề: tại sao biến oopsGlobal không hề đặt var nhưng hàm không hề báo lỗi. Theo suy luận, các biến được sử dụng mà không có từ khóa var được tạo tự động trong global scope. Điều này có thể tạo ra hậu quả không mong đợi ở những nơi khác trong mã của bạn hoặc khi hàm chạy lặp lại. Vì thế, bạn nên luôn luôn khai báo biến của bạn với từ khóa var.
Local Scope and hàm Functions
Những biến được khai báo trong hàm, cũng như được khai báo trong ngoặc đơn của hàm (hàm có thông số, vd: function hamA(a , b) {…} ). Biến đó chỉ dùng đươc trong hàm****
function myTest() {
var loc = “foo”;
console.log(loc);
}
myTest(); // “foo”
console.log(loc); // “undefined” // biến không xác định
Biến local sẽ được ưu tiên hơn khi tồn tại song song hoặc cùng tên với biến global.
var someVar = “Hat”;
function myFun() {
var someVar = “Head”;
return someVar;
}
Bạn có thể lấy giá trị trả về của hàm và gán giá trị đó cho 1 biến:
var changed = 0;
function change(num) {
return (num + 5) / 3;
}
changed = change(10); // kết quả là : 5
Tạo hàm nextInLine có thể thêm 1 giá trị/phần tử vào cuối 1 mảng (array), và loại bỏ giá trị/phần tử đầu tiên trong mảng. Kết quả của hàm sẽ trả về cáo giá trị/phần tử trong mảng sau khi đã thực hiện thêm và loại bỏ.
function nextInLine(arr, item) {
arr.push(item); //thêm giá trị/phần tử
var removeItem = arr.shift(); //loại bỏ giá trị/phần tử đầu tiên trong mảng
return removeItem; // trả về kết quả khi gọi hàm
}
// tạo mảng để test
var testArr = [1,2,3,4,5];
var testArr2 = [5,6,7,8,9];
// Gọi hàm in kết quả
console.log("Before: " + JSON.stringify(testArr));
console.log(nextInLine(testArr, 1)); //kết quả là: 1
console.log(nextInLine([2], 1)); // kết quả là: 2
console.log(nextInLine(testArr2, 1)); //kết quả là: 5
console.log(nextInLine(testArr, 10), testArr[4]);
console.log("After: " + JSON.stringify(testArr));
Bình đẳng thức, sự khác nhau giữa “===” và “==”. Với so sánh “===” thì đẳng thức sẽ so sánh cả kiểu dữ liệu và giá trị/phần tử .
3 === 3 //kết quả trả về là: true
3 === ‘3’ //kết quả trả về là: false
Tài liệu tham khảo thêm :
free-programming-books
https://writingjavascript.org/posts/introduction-to-functions-numbers-in-javascript