سؤال

وأخذ إطار مسج على سبيل المثال، إذا قمت بتشغيل التعليمات البرمجية مثل هذا:

$(document).ready(function init() { foo.bar(); });

وسوف تتبع المكدس تحصل في الحرائق بهذا الشكل:

init()
anonymous()
anonymous([function(), init(), function(), 4 more...], function(), Object name=args)
anonymous()
anonymous()

وكما ترون، انها ليست للقراءة للغاية، لأن عليك ان تضغط على كل وظيفة لمعرفة ما هو عليه. إن وظائف مجهولة تظهر أيضا كما (?)() في التعريف، وأنها يمكن أن تؤدي إلى " لا يمكن الوصول الأمثل إغلاق "علة. ويبدو لي أن هذه هي أسباب وجيهة لتفاديها. ثم هناك حقيقة أن ECMAScript 5 واستنكر arguments.callee في الوضع بشكل صارم، مما يعني أنه لن يكون من الممكن الرجوع ظائف مجهولة معها، مما يجعلها أقل قليلا المستقبل برهان.

من ناحية أخرى، وذلك باستخدام وظائف اسمه يمكن أن يؤدي إلى التكرار، ومنها مثلا:

var Foo = {
    bar: function bar() {}
}

function Foo() {}

Foo.prototype.bar = function bar() {}

وأنا تصحيح في التفكير في أن هذا التكرار له ما يبرره في ضوء راحة التصحيح توفر وظائف الكشف عن اسمه، وأن انتشار ظائف مجهولة في أطر جيدة مثل مسج هو سهو؟

هل كانت مفيدة؟

المحلول 2

ولقد وجدت الإجابة على سؤالي في هذا مفيدة للغاية المقالة . أولا، تبين أن كنت على حق حول وظائف اسمه يجري أكثر من المرغوب فيه، ولكن الحل ليس بسيطا كما اضاف معرفات لجميع وظائف مجهولة. والسبب الرئيسي لذلك هو ل JScript تنفيذ تعبيرات وظيفة بطريقة كسر للغاية.

وثانيا، هناك فرق بين التصريحات وظيفة والتعبيرات. وظيفة غير معروفة هي مجرد تعبير وظيفة مع معرف حذف، وإضافة معرف (اسمها) لن تجعل من بيان (باستثناء في JScript، وهذا هو السبب انها مكسورة). وهذا يعني أن جميع إجابات أخرى كانت خارج علامة.

نصائح أخرى

وأنا أتفق هناك بعض الجوانب السلبية لاستخدام أساليب غير معروفة في جافا سكريبت / EMCAScript. ومع ذلك، لا نغفل كيف يجب أن تستخدم. لاحد المتشددين البسيطة التي تريد تمريرها إلى وظيفة أخرى، فإنها غالبا ما تكون ممتازة.

ولكن بالنسبة لي ظائف مجهولة هي أكثر قابلية للقراءة في التعليمات البرمجية المصدر، لأنني واثق من أنها تستخدم فقط هناك.

وظائف مجهول ومريحة للغاية. إصلاح أفضل لهذه المشكلة، بدلا من تسمية الوظائف، سيكون إذا قال لك الحرائق على أي سطر في الملف الذي تم إنشاؤه وظيفة غير معروفة.

init()
anonymous() // application.js, line 54
anonymous() // foo.js, line 2

وتتبع المكدس هو المكان الوحيد الذي وظائف مجهولة هي مشكلة المنظمة البحرية الدولية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top