نوع البيانات
JavaScript هي لغة ضعيفة من النوع ، لكنها لا تخلو من أنواع. يمكن لـ JavaScript التعرف على الأنواع السبعة المختلفة التالية من القيم:
أنواع البيانات الأساسية
1.Boolean
2. عدد
3.String
4. نول
5.ededed
6.Symbol
هدف
1.Ray
2.regexp
3.Date
4.MATH
5 ....
يمكنك استخدام typeof لتحديد نوع البيانات. يقوم المشغل بإرجاع سلسلة ، ولكن لم يتم إرجاع جميع النتائج التي تم إرجاعها مع التوقعات.
typeof false // "boolean" typeof .2 // "number" typeof nan / "number" typeof '' // "string" typeof undefined // "undefined" typeof symbol () // "symbol" typeof new date () // "object".
عامل
في التطبيق ، استخدم المتغيرات لتسمية القيمة. يسمى اسم المتغير معرفات
إفادة
1. استخدم الكلمة الرئيسية VAR: نطاق الدالة
2. استخدم الكلمة الرئيسية Let: حظر المتغير المحلي
3. الاستخدام المباشر: النطاق العالمي
var global_var = 1 ؛ function fn () {var fn_var = 2 ؛ if (fn_var> 10) {let block_var = 3 ؛ global_var2 = 4 ؛}}فقط لا تعلن أي مهمة ، فإن القيمة الافتراضية للمتغير غير محددة
يمكن للكلمة الرئيسية const أن تعلن عن المتغيرات غير القابلة للتغيير ، كما يتم تحديد حظر. يتطلب فهم الأشياء غير القابلة للتغيير الاهتمام
const num = 1 ؛ const obj = {prop: 'value'} ؛ num = 2 ؛ // uncicted typeerror: التخصيص إلى متغير ثابت. // uniticed typeerror: تعيين متغير ثابت.تعزيز متغير
يمكن أن تشير JavaScript إلى المتغيرات المعلنة لاحقًا دون إلقاء مفاهيم مختلفة. يسمى هذا المفهوم ترويج الإعلان المتغير (الرفع)
console.log (a) ؛ // undefinedvar a = 2 ؛
أي ما يعادل
var a ؛ console.log (a) ؛ a = 2 ؛
وظيفة
الوظيفة هي روتين فرعي يمكن أن يطلق عليه رمز خارجي (أو تسمى بشكل متكرر الوظيفة نفسها).
تحديد الوظائف
1. إعلان الوظيفة
2. تعبيرات الوظيفة
3. مُنشئ الوظيفة
4. وظيفة السهم
الدالة fn () {} var fn = function () {} var fn = new function (arg1 ، arg2 ، ... argn ، funcbody) var fn = (param) => {}الحجج
1. الحجج: كائن يشبه المصفوفة يحتوي على معلمات تم تمريرها إلى وظيفة التنفيذ الحالية
2. arguments.length: عدد المعلمات التي تم تمريرها إلى الوظيفة
3. arguments.caller: اتصل بالوظيفة التي تنفذ الوظيفة حاليًا
4.Arguments.callee: الوظيفة التي يتم تنفيذها حاليًا
دالة foo () {عودة وسيطات ؛} foo (1 ، 2 ، 3) ؛ // الوسيطات [3] // {"0": 1 ، "1": 2 ، "2": 3}استراحة
وظيفة foo (... args) {return args ؛} foo (1 ، 2 ، 3) ؛ // array [3] // [1 ، 2 ، 3] function fn (a ، b ، ... args) {return args ؛} fn (1 ، 2 ، 3 ، 4 ، 5) ؛ // Array [3] // [3 ، 4 ، 5]تقصير
يمكن الاتفاق على القيم الافتراضية عند تحديد معلمات الوظيفة.
دالة fn (a = 2 ، b = 3) {return a + b ؛} fn (2 ، 3) ؛ // 5fn (2) ؛ // 5fn () ؛ // 5هدف
الكائنات في JavaScript هي مجموعات مفتاح متغيرة
تحديد الكائنات
1. الحرفي
2. مُنشئ
var obj = {prop: 'value' ، fn: function () {}} ؛ var date = new date () ؛مُنشئ
لا يوجد فرق بين مُنشئ ووظيفة طبيعية. الاتصال مع الكلمة الرئيسية الجديدة هو مُنشئ. باستخدام المُنشئ يمكن أن يقوم بتثبيت كائن.
هناك عائدان محتملان للوظيفة
1. استدعاء بشكل صريح لإرجاع تقييم التعبير بعد العودة
2. لا يتم استدعاء عودة وإرجاع غير محدد
وظيفة الأشخاص (الاسم ، العمر) {this.name = name ؛ this.age = age ؛} var people = new People ('Byron' ، 26) ؛يرجع مُنشئ القيمة
1. لا قيمة الإرجاع
2. نوع بيانات بسيط
3. نوع الكائن
يقوم المُنشئ بإرجاع مثيل للمقدم في أول حالتين. يتم استخدام هذه الميزة عن طريق إنشاء كائن.
ينفذ المُنشئ الثالث نفس الوظيفة العادية ، ويعيد نتيجة التعبير بعد العودة
النموذج الأولي
1. كل وظيفة لها سمة كائن للنموذج الأولي ، وهناك سمة مُنشئ في الكائن ، والتي تشير إلى الوظيفة نفسها افتراضيًا.
2. كل كائن له سمة __proto__
Function Person (name) {this.name = name ؛} person.prototype.print = function () {console.log (this.name) ؛} ؛ var p1 = new شخص ('byron') ؛ var p2 = new شخص ('casper') ؛ p1.print () ؛ p2.print () ؛هذا والنطاق
يمكن فهم النطاق بطريقة شعبية
1. من أنا
2. أي نوع من الفرسان لدي
من أجبت هذا
الفارس هو متغيرتي المحلية
هذا المشهد
وظائف طبيعية
1. الوضع الصارم: غير محدد
2. الوضع غير الشريط: الكائن العالمي
3.node: عالمي
4. المتصفح: نافذة
مُنشئ: مثيل لكائن
طريقة الكائن: كائن نفسه
اتصل وتطبيق
1.fn.call (السياق ، Arg1 ، Arg2 ، ... ، argn)
2.fn.apply (السياق ، args)
دالة isNumber (obj) {return object.prototype.toString.call (obj) === '[كائن رقم]' ؛}function.prototype.bind
يرجع bind إلى وظيفة جديدة ، نطاق الوظيفة هو معلمة BIND
الدالة fn () {this.i = 0 ؛ setInterval (function () {console.log (this.i ++) ؛}. bind (this) ، 500)} fn () ؛ () => {}وظيفة السهم هي ميزة جديدة توفرها ES6 ، وهي تعبير وظيفة مختصرة ، مع نطاق معجمي وهذه القيمة
الدالة fn () {this.i = 0 ؛ setInterval (() => {console.log (this.i ++) ؛} ، 500)} fn () ؛ورث
في سيناريو JavaScript ، يكون للميراث هدفين ، وتحتاج الفئة الفرعية إلى الحصول على فئة الوالدين:
1. خصائص الكائن
2. طريقة الكائن
دالة مورث (الطفل ، الوالد) {var _proptotype = object.create (parent.prototype) ؛ _ proptotype.constructor = child.prototype.constructor ؛ child.prototype = _prototype ؛ هذا {people.call (هذا ، الاسم ، العمر) ؛ this.language = language ؛} يرث (صيني ، أشخاص) ؛ صيني. الصينية ("سلطة زيت" ، 27 ، "صينية") ؛ en.introduce () ؛ cn.introduce () ؛فئة ES6 والميراث
"استخدام صارم" ؛ فئة الأشخاص {constructor (الاسم ، العمر) {this.name = name ؛ this.age = age ؛} getName () {return this.name ؛ this.getName ()) ؛ console.log ('I Speak' + this.language) ؛}} دعنا en = new English ('Byron' ، 26 ، 'English') ؛ en.introduce () ؛قواعد
بيان التسمية
حلقة:
لـ (var i = 0 ؛ i <10 ؛ i ++) {for (var j = 0 ؛ j <5 ؛ j ++) {console.log (j) ؛ if (j === 1) {break loop ؛}}} console.log (i) ؛البيانات والتعبيرات
var x = {a: 1} ؛ {a: 1} {a: 1 ، b: 2}تنفيذ الوظيفة على الفور
(function () {} ()) ؛ (function () {}) () ؛ [function () {} ()] ؛ ~ function () {} () ؛! function () {} () ؛+ function () {} () ؛- function () {} () ؛ delete function () {} () ؛ typeof function () {} () ؛ void function () {} () function () {} () ؛ 1> function () {} () ؛وظائف متقدمة
وظائف الترتيب العالي هي وظائف تعالج الوظائف كمعلمات أو قيم الإرجاع كوظائف.
وظيفة رد الاتصال
[1 ، 2 ، 3 ، 4].
إنهاء
يتكون الإغلاق من جزأين
1. الوظيفة
2. البيئة: المتغيرات المحلية ضمن النطاق عند إنشاء الوظيفة
دالة makecounter (init) {var init = init || 0 ؛ function function () {return ++ init ؛}} var counter = makecounter (10) ؛ console.log (counter ()) ؛ console.log (counter ()) ؛ console.log (counter ()) ؛خطأ نموذجي
لـ (var i = 0 ؛ i <doms.length ؛ i ++) {doms.eq (i) .on ('click' ، function (ev) {console.log (i) ؛}) ؛} لـ (var i = 0 ؛ i <doms.length ؛ i ++) {(i) {doms.eq (i) .on ( {console.log (i) ؛}) ؛}) (i) ؛}وظائف كسول
وظيفة eventBinderGenerator () {if (window.adDeventListener) {function function (element ، type ، handler) {element.addeventListener (type ، hanlder ، false) ؛}} else {return function (element ، type ، type) eventBinderGenerator () ؛كاري
طريقة للسماح باستخدام المعلمات الجزئية لإنشاء وظائف
الوظيفة isType (type) {return function (obj) {return object.prototype.toString.call (obj) === '[object' + type + ']' ؛}} var isNumber = isType ('number') ؛ console.log (isNumber (1)) ؛ console.log (iSnumber ('s')) ؛ Istype ('Array') ؛ console.log (isarray (1)) ؛ console.log (isarray ([1 ، 2 ، 3])) ؛ الدالة f (n) {return n * n ؛} الدالة g (n) {return n * 2 ؛} console.log (f (g (5))) ؛ pipe function (f ، g) {return function () {return f.call (null ، g.apply (null ، mensuments)) ؛عودة الذيل
1. استدعاء الذيل يعني أن الخطوة الأخيرة من الوظيفة هي استدعاء وظيفة أخرى
2. تدعو الوظيفة نفسها ، تسمى العودية
3. إذا استدعى الذيل نفسه ، فسيسمى عودة الذيل
العودية عرضة لأخطاء "مكدس الفائض" (فائض مكدس)
Function Factorial (n) {if (n === 1) return 1 ؛ return n * factorial (n - 1) ؛} factorial (5) // 120ولكن بالنسبة لعلامة الذيل ، نظرًا لوجود سجل مكالمة واحد فقط ، فلن يحدث خطأ "مكدس Overflow"
Function Factorial (N ، Total) {if (n === 1) إرجاع إجمالي ؛ إرجاع Factorial (n - 1 ، n * total) ؛} factorial (5 ، 1) // 120الكاري يقلل من المعلمات
دالة الكاري (fn ، n) {return function (m) {return fn.call (this ، m ، n) ؛} ؛} وظيفة tailfactorial (n ، المجموع) {if (n === 1) إجمالي الإرجاعمكافحة الاضطرابات
function.prototype.uncurry = function () {return this.call.bind (this) ؛} ؛دفع التعميم
var push = array.prototype.push.uncurry () ؛ var arr = [] ؛ push (arr ، 1) ؛ push (arr ، 2) ؛ push (arr ، 3) ؛ console.log (arr) ؛
المحتوى أعلاه هو الوصف الكامل للأمثلة الكلاسيكية الرائعة للغة JavaScript (التجميع) التي قدمها لك المحرر. آمل أن يكون ذلك مفيدًا للجميع!