رأيت اليوم سؤال اختبار ينفذ وظائف القواعد التالية:
var a = add (2) (3) (4) ؛ // 9
هذا هو تطبيق وظيفة الترتيب العالي. التحليل: إضافة (2) سيعود وظيفة ، وإضافة (2) (3) ستعيد أيضًا وظيفة ، وأخيراً إضافة (2) (3) (4) ستعيد قيمة رقمية.
ينجز:
الوظيفة إضافة (num1) {function function (num2) {return function (num3) {return num1+num2+num3 ؛}}} إضافة (2) (3) (4) ؛ // 9لا حرج في هذا ، يمكن أن يحل المشكلة تمامًا.
التحسين: يتم مناقشة الجزء فقط من وظائف الترتيب العالي هنا. للحصول على حلول أفضل ، يمكن تنفيذ المكالمات اللانهائية.
// method 1 function add (a) {var temp = function (b) {return add (a + b) ؛} temp.valueof = temp.toString = function () {return a ؛} ؛ return return} add ؛} add.valueof = add.toString = function () {return add.num} ؛ var a = add (3) (4) (5) (6) ؛ // 18 // الطريقة 2 التعليق: في الواقع ، فإنه يعادل ، ولكن يتم تطبيق سمة مخصصة على الوظيفة لتخزين القيمة. ، // 18 [/code]هذا ما كتبته في المقال الذي رأيته في [url = http: //www.cnblogs.com/wengxuesong/p/5577683.html] مدونة حديقة المدونة [/url]. لم أفهم أبدًا الطريقة الأولى والطريقة الثانية ، وحاولت أيضًا إخراج [Code = JavaScript ، JavaScript ، True] Function 9 في وحدة التحكم
var temp = function () {} temp.valueof = function () {return 2 ؛} temp.toString = function () {return 'hahh' ؛} ALERT (temp) ؛ console.log (2 * temp) ؛عندما تحتاج إلى تحويل إلى سلسلة ، سيتم استدعاء tostring ، وسيتم استدعاء ValueOF عندما تحتاج إلى تحويل إلى رقم.