Javascript console.log Placeholders


4

Здавейте , 

Попаднах на тези  placeholder-и за javascript , които правят форматирането на console.log() поне малко по - лесно и доста по - разбираемо от конкатенирането на стрингове, особено при - по дългите. За тези които са свикнали да ги използват в C# предполагам ще им е удобно:

%s for a String value
%d or %i for a Integer value
%f for a Floating point number
%o for an Object hyperlink

Могат да се използват само при форматирането на текста в console.log().

Пример:

Вместо да пишем console.log('Array 1:  ' + arr1 + 'Array 2:  ' + arr2 + 'Array 3: ' + arr3);

//Недай си боже забравиш някой плюс :)

Може да се запише така console.log('Array 1: %o . Array 2: %o . Array 3: %o .', arr1, arr2, arr3);

примерът е построен така за по - нагледно иначе, бих изполвал и \n и т.н.




Отговори



1

Да, тези placeholder-и са удобни за хората, които преди това са писали Java, например. Аз така и не запомних кое какво е с тези типове xD Затова пък с ES6, вече имаме template strings, като една от основните разлики е, че ползваме `` (backticks), а не кавички.


var name = 'Pesho';

var greeting = `Hello, ${name}!`;

console.log(greeting); // Hello, Pesho!


Работи в последните няколко версии на Firefox и Chrome, а също така и в iojs без никакви допълнителни флагове. В nodejs не ги подкарах нещо дори с --use-strict и --harmony...


PS. Подробности: A critical review of ECMAScript 6 template strings


от heruelda (894 точки)


0
Тези са още по - удобни, а и не само за конзолата, мерси! 

от kidroca (1498 точки)


6

Може да вкарате и малко JS магия и да си напишете string.format, console.format :)

String.format = function (formatString) { if (!formatString) return ''; var args = Array.prototype.slice.call(arguments, 1); return formatString.replace(/{(\d+)}/g, function (match, index) { return args[index] ? args[index] : match; }); }; console.format = function() { console.log(String.format.apply(this, arguments)); }


Изплозване:

console.format('I am {0}. I am {1} years old', 'Pesho', 15);


от westi3m (5621 точки)


2
Какъв е въпроса с поддръжката на това нещо. Аз не го бях чувал досега, затова да попитам:
От колко време го има или е от EcmaScript 6?

от sa66eto (1945 точки)


2

от Teodor92 (13062 точки)

0

Пробвах го Chrome, Firefox и IE , работи. Не зная колко е ново ...

Направи ми впечатление че на лекциите по C# се използваха placeholder-и ({0} , {1} и т.н.), а във тези за javascript не се използват никакви (за сега), някой знае ли дали има причина, или просто не се е налагало.

Иначе ги споделих заради домашните , много хора си изкарват резултата на конзолата, аз също. 


от kidroca (1498 точки)