$( html, attributes)
– создаёт новый HTML элемент. См. документацию.<button>
, внутри кнопки задаётся текст "Contact me". Эта кнопка вставляется в DOM-дерево после первого элемента <article>
и на неё вешается слушатель события клика – метод show()
var lastGood = this.currentClient.jsondata, candidate, counter = 0, found = false;
while ( ++counter < 100) {
try {
candidate = JSON.parse(boo);
} catch(e) {
this.currentClient.jsondata = lastGood;
found = true;
}
if( found) break;
lastGood = candidate;
}
candidate
. Ограничить максимальное число итераций счётчиком. Ловить исключение. var canvas = document.getElementById("myCanvas")
, ctx = canvas.getContext("2d")
, r
;
ctx.translate( 500/2, 500/2); // передвинуться на центр листа
ctx.font = "14px Arial";
ctx.textAlign = "center";
ctx.textBaseline="middle";
ctx.fillStyle = "#999";
for(r=100;r<=500;r+=20) circle(r);
function circle(r) {
var dist = 16
, n = Math.round( 2 * Math.PI * r / dist)
, i
;
for(i=0;i<n;i++) {
ctx.rotate( 2 * Math.PI / n); // повернуть лист
ctx.fillText( Math.round(100*Math.random())%2?0:1,0,-r);
}
}
function getPostScore(time) {
var diff = Math.floor((new Date()).getTime()/1000) - time;
if( diff <= 3600) return 50000;
else if( diff <= 7200) return 25000;
else if( diff <= 10800) return 10000;
else return 0;
}
getPostScore(1493487180); // 10000
y = k / x
k = 50000 * 3600
она удачно захватывает и вторую точку. Но плоха тем, что ближе к нулю зашкаливает в +бесконечность.function getPostSigma(time){
var diff = Math.floor((new Date()).getTime()/1000) - time;
return Math.round( 10000 + 40000 / (1 + Math.exp((diff-6800)/700)));
}
getPostSigma(1493531780); // 49998
getPostSigma(1493522780); // 11545
options
, которым даёте значение в начале, и options
внутри функции – это две разные штуки. Разберитесь с «областью видимости» переменных в JavaScript. Внутри функции как бы объявляется собственная версия переменной options
, значение которой передаётся в функцию при её вызове.opts
– и всё встанет на свои места: options = {
width: 10,
height: 20,
contents: 'some text'
};
function show(opts) {
var width = opts.width || "";
var height = opts.height || "";
var contents = opts.contents || "Предупреждение";
return width + height + contents;
}
console.log(show( options)); // 30some text
options.contents = 'Другой текст';
console.log(show( options)); // 30Другой текст
'' + width + height + contents
api.vk.com
, это кроссдоменный запрос. В jQuery ajax нужно указать тип данных jsonp
.function getPhoto( id, callback) {
$.post({
url: "https://api.vk.com/method/users.get",
data: {
user_id: parseInt(id),
fields: "photo_100",
v: 5.63
},
dataType: "jsonp",
success: function(r) {
if(r && r.response && r.response[0].photo_100) {
return callback(r.response[0].photo_100);
} else {
console.log("No photo in response")
}
}
});
}
function gotPhoto( url) {
var img = $('<img>')
.attr('width', 100)
.attr('height', 100)
.attr('src', url)
;
$('body').append(img);
}
getPhoto( 755074, gotPhoto);
arguments.callee
содержало название текущей функции/метода. Но в ES5 от этого отказались, и поэтому в strict mode это вызовет ошибку. "use strict";
можно было бы написать в каждой функции console.log( arguments.callee);
function loadCurrencyJSON() {
return '{"AUD":44.95,"GBP":73.42,"BRL":18.8,"USD":58.85,"EUR":62.68,"ZZZ":79.91}';
}
function convertCurrency (amount, from, to) {
let rates = JSON.parse(loadCurrencyJSON());
return ( amount / rates[to] * rates[from]).toFixed(2); // вернуть число, округленное до сотых
}
let price1 = convertCurrency(7000, 'ZZZ', 'USD');
console.log(`Сумма ${price1} USD`);
// Сумма 9505.01 USD
let price2 = convertCurrency(790, 'EUR', 'ZZZ');
console.log(`Сумма ${price2} Q`);
// Сумма 619.66 Q
$
– это объект jQuery. Через точку к нему обращаются, чтобы вызвать его методы или получить свойства. В вашем примере вызывается метод hide()
step
– туда можно передать функцию, которая будет вызываться при каждом шаге анимации. Можно запустить «пустую» анимацию, которая не будет ничего прятать, но станет вызывать упомянутую функцию. Иногда и такое нужно.$.each()
) позволяет «пробежаться» как по массиву, так и по объекту, выполняя какое-то действие с каждым из элементов/свойств.