TypeError: কনসোল.লগ (…) কোনও ফাংশন নয়


104

আমি কীভাবে কনসোল পেতে পারি তা আমি সত্যিই বিভ্রান্ত। ক্রোম সংস্করণ 43.0.2357.130 (-৪-বিট)।

এখানে চিত্র বর্ণনা লিখুন

কোডটি এখানে:

$scope.columnNameChanged = function (tableColumn) {
    setDirtyColumn(tableColumn);
    //propagate changes to the key fields
    for (var i = 0; i < $scope.tableIndexes.length; ++i) {
        for (var j = 0; j < $scope.tableIndexes[i].columnName.length; ++j) {
            if ($scope.tableIndexes[i].columnName[j] === tableColumn.previousName) {
                console.log('xxx', $scope.tableIndexes[i].columnName[j])
                (function (i, j) {
                    $timeout(function () {
                        console.log($scope.tableIndexes[i].columnName[j])
                        $scope.tableIndexes[i].columnName[j] = tableColumn.name.toUpperCase();
                        console.log($scope.tableIndexes[i].columnName[j])
                    });
                })(i, j);
            }
        }
    }
};

দুঃখিত ছবিটি খুব ছোট বলে পুনরায় আকার দেওয়া হয়েছে বলে মনে হচ্ছে। আমি এটির আসল আকারটি কীভাবে প্রদর্শন করব তা বোঝার চেষ্টা করছি।
কিয়ান চেন

4
আপনার কোড এবং ত্রুটিগুলি দেখানোর জন্য দয়া করে ছবি ব্যবহার করবেন না এটি খারাপ অভ্যাস।
ব্লুবার্গুই

উত্তর:


214

সমাধান

কেবলমাত্র সেমিকোলণ (করা ;) এর পর console.log(... )


ব্যাখ্যা

ত্রুটি সহজেই এর মতো পুনরুত্পাদনযোগ্য:

console.log()
(function(){})

এটা পাস চাচ্ছে function(){}একটি আর্গুমেন্ট হিসাবে ফেরত মান এর console.log()যা নিজেই একটি ফাংশন নয় কিন্তু আসলে undefined(চেক typeof console.log();)। এটি কারণ জাভাস্ক্রিপ্ট এটি হিসাবে ব্যাখ্যা করে console.log()(function(){})console.logতবে হয় একটি ফাংশন।

আপনার যদি consoleঅবজেক্টটি না থাকে তবে আপনি দেখতে পাবেন

রেফারেন্সএরর: কনসোল সংজ্ঞায়িত হয়নি

আপনার যদি consoleঅবজেক্ট থাকে তবে logআপনি যে পদ্ধতিটি দেখতে চান তা না হলে

TypeError: কনসোল.লগ কোনও ফাংশন নয়

আপনার যা আছে তা হ'ল

TypeError: কনসোল.লগ (...) কোনও ফাংশন নয়

(...)ফাংশন নাম পরে নোট করুন । তাদের সাথে এটি ফাংশনের রিটার্ন মান উল্লেখ করে।

স্বয়ংক্রিয় সেমিকোলন সন্নিবেশনের (এএসআই) জাভাস্ক্রিপ্টের নিয়মের কারণে লাইন ব্রেকটি এই দুটি এক্সপ্রেশনকে পৃথক স্টেটমেন্ট হিসাবে আলাদা করে না


শ্রদ্ধা ;

এই সমস্ত কোড স্নিপেটগুলি যদি কোনও সেমিকোলন উপস্থিত না থাকে তবে সমস্ত ধরণের অপ্রত্যাশিত ত্রুটির ফলস্বরূপ:

console.log() // As covered before
() // TypeError: console.log(...) is not a function
console.log() // Accessing property 0 of property 1 of the return value…
[1][0] // TypeError: console.log(...) is undefined
console.log() // Like undefined-3
-3 // NaN
let a, b;
const array = Array.from({ length: 2 })

// Now, let’s use destructuring:
[a, b] = array; // ReferenceError: can't access lexical declaration 'array' before initialization
let a, b;
const array = Array.from({ length: 2 }).fill(1),
  array2 = Array.from({ length: 2 })

// Now, let’s use destructuring. Attempt to get the two 1’s from `array` as `a` and `b`:
[a, b] = array;
console.log(a, b); // undefined undefined

আরেকটি উদাহরণ

আপনি (...)ঘন ঘন পদ্ধতিতে বা শৃঙ্খলিত সম্পত্তি অ্যাকসেসরের ব্যবহারের সাথে প্রায়শই দেখেন :

string.match(/someRegEx/)[0]

যে Regex পাওয়া না গেলে পদ্ধতি ফিরে আসবে nullএবং এর সম্পত্তি অ্যাকসেসর nullএকটি কারণ হবে TypeError: string.match(...) is null - ফেরত মান হয় null। ক্ষেত্রে ফেরত মান ছিল ।console.log(...)undefined


8
ধন্যবাদ একটি সেমিকোলন যুক্ত করে সমস্যার সমাধান। জাভাস্ক্রিপ্টে কি অন্ধকার কোণে।
কিয়ান চেন

4
@ এলজস কিয়ানচেন: সর্বদা সেমিকোলন ব্যবহার করার একটি কারণ।
ফেলিক্স ক্লিং

4
এটি কারণ console.log()()এটির console.log(...)3 টি বিন্দু কোনও ফাংশন ত্রুটি নয়, অন্যথায় এটি কেবল console.logফাংশন নয় (কেবল এটি নষ্ট না হলেও আসলে এটি ছিল)
বিনয়াকজ

4
নিখুঁতভাবে কিছু একটি ফাংশন নয়, তাহলে যে ফাংশন সর্বদা তার ফাংশনের নাম দ্বারা referd হয়, যেমন object.method, আপনি ফেরত মান ব্যবহার করছেন, বিশেষ করে একটি শৃঙ্খলিত পদ্ধতি, এটা হবেন object.method(...)। আপনার কেন সর্বদা সেমিকোলন ব্যবহার করা উচিত এবং জাভাস্ক্রিপ্ট ত্রুটি বার্তাগুলি কীভাবে সঠিকভাবে ব্যাখ্যা করবেন তা জানার জন্য এই অভিজ্ঞতাটি নেয় ।
ব্যবহারকারী4642212

4
এই জাতীয় সমস্যার কারণে মাঝে মাঝে সেমিকোলনের সাথে সর্বদা আইআইএফই উপসর্গের প্রস্তাব দেওয়া হয়। যদি আপনি এটিকে চারপাশে সরিয়ে নেন তবে অন্য কোথাও নিখোঁজ সেমিকোলন ভাঙার ঝুঁকি নেই। সংযোজন / বান্ডিল করার সময় যদি জিনিসগুলি অদ্ভুত হয় তবে এটি আরও নিরাপদ হবে।
মেরি

5

ত্রুটির মানে যে ফেরত মান এর console.log()একটি ফাংশন নয়। আপনি একটি সেমিকোলন অনুপস্থিত:

console.log('xxx', $scope.tableIndexes[i].columnName[j]);
//                                                      ^

যা (...)IIFE এর নিম্নলিখিতগুলি একটি ফাংশন কল হিসাবে ব্যাখ্যা করতে সক্ষম করে।


এর ত্রুটি বার্তাগুলির তুলনা করুন

> var foo = {bar: undefined};
> foo.bar();
Uncaught TypeError: foo.bar is not a function

এবং

> var foo = {bar: function(){}};
> foo.bar()();
Uncaught TypeError: foo.bar(...) is not a function

5

2020 আপডেট

একটি সম্ভাব্য কারণ var consoleআপনার স্ক্রিপ্টের কোথাও ঘোষণা হতে পারে ।

ব্যবহার:

window.console.log(...);

পরিবর্তে. আমার জন্য কাজ করেছেন।

আমি আসা করি এটা সাহায্য করবে


আমার একই সমস্যা এবং গ্লোবাল.কমসোল.লগ কাজ করে, কেন এমন হচ্ছে? আমি এটি কীভাবে ঠিক করব এবং কনসোল.লগটি ব্যবহার করব
গিউটেন

1

এই ত্রুটির মুখোমুখি হওয়ার আরও একটি উপায় রয়েছে। console.logপরিবর্তনযোগ্য নয় এবং ঘটনাক্রমে মানটি ওভাররাইট করা সম্ভব।

console.log = 'hi';

এক্ষেত্রে ক্ষতিটিকে পূর্বাবস্থায় ফেলার জন্য পৃষ্ঠাটি পুনরায় লোড করুন।


-1

আমি জানি এটি "উত্তর" নয়, তবে ভেবেছিলাম যে আমি নিম্নলিখিতটিতে টস করব

 var console = $( data.message_target );
 console.val( console.val() + data.message); 
 console.scrollTop(console[0].scrollHeight - console.height());

যে পৃষ্ঠায় আমি " কনসোল " বলছিলাম তার একটি পাঠ্য ছিল had হঠাৎ আমার সমস্ত কনসোল.লগ () স্ক্রিপ্টগুলি ত্রুটিটি দিয়েছে "আনকচড টাইপ এরিয়ার: কনসোল.লগ অবজেক্টে কোনও ফাংশন নয়"

... এবং ঠিক তাই, কারণ আমি আমার অবজেক্ট / ভারের জন্য একটি সংরক্ষিত নেমস্পেস ব্যবহার করেছি। আমি বুঝতে পেরেছিলাম যে তাঁর পোস্টটি পড়ার পরে আমি কী করেছি এবং উত্তরসূরির জন্য: ডাবল চেক নামকরণের সম্মেলন।

চিয়ার্স

"এটি সর্বদা মানুষের ত্রুটি"


-1

অন্তত প্রতিক্রিয়া-স্থানীয় ক্ষেত্রে, কনসোলটি কোনও আমদানি ছাড়াই কাজ করে বলে মনে হচ্ছে, তাই, ফাইলটি সরাতে import console = require('console');বা import console from 'console';শুরু করা আমার জন্য এটি স্থির করে। (ভিএস কোড আইডিই মনে হয় এটি কখনও কখনও স্বয়ংক্রিয়ভাবে যোগ হয়)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.