// исходное определение:
const flip(f) => (a, b) => f(b, a);
// можно развернуть:
function flip(sourceFunction) {
return function(a, b) {
return sourceFunction(b, a);
}
}
Функция flip()
принимает аргументом функцию. И возвращает новую функцию.function flip(f) {
// ура, нам дали какую-то исходную функцию!
var sourceFunction = f; // для красоты запишем её в свою переменную
// можно и вызвать её при желании: sourceFunction(4, 5)
// но пока не будем. Рано. Ждём.
// сделаем новую, хакерскую функцию
var hackerFunc = function(a, b) {
// тут пусть всю работу делает старая функция
var result = sourceFunction(a, b);
// стоп. Не то. Надо же аргументы местами поменять
var result = sourceFunction(b, a);
// хакерский результат
return result;
} // конец определения хакер-функции
// вернём теперь хакер-функцию:
return hackerFunc;
}
Вот как flip(f) возващает новую хитрую хакерскую функцию.<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/ >
<title>Smoothed Radar Chart</title>
<!-- Google fonts -->
<link href="https://fonts.googleapis.com/css?family=Open+Sans:400,300" rel='stylesheet' type='text/css'>
<link href='https://fonts.googleapis.com/css?family=Raleway' rel='stylesheet' type='text/css'>
<!-- D3.js -->
<script src="https://d3js.org/d3.v4.min.js" charset="utf-8"></script>
<script src="https://d3js.org/d3-path.v1.min.js" charset="utf-8"></script>
<script src="radarChart.js" charset="utf-8"></script>
<style>
body {
font-family: 'Open Sans', sans-serif;
font-size: 11px;
font-weight: 300;
fill: #242424;
text-align: center;
text-shadow: 0 1px 0 #fff, 1px 0 0 #fff, -1px 0 0 #fff, 0 -1px 0 #fff;
cursor: default;
}
.legend {
font-family: 'Raleway', sans-serif;
fill: #333333;
}
</style>
</head>
<body>
<div class="radarChart" style="display: inline-flex;"></div>
<div class="radarChart2" style="display: inline-flex;"></div>
<script>
//////////////////////////////////////////////////////////////
//////////////////////// Set-Up //////////////////////////////
//////////////////////////////////////////////////////////////
var margin = { top: 50, right: 80, bottom: 50, left: 80 },
width = Math.min(700, window.innerWidth / 4) - margin.left - margin.right,
height = Math.min(width, window.innerHeight - margin.top - margin.bottom);
//////////////////////////////////////////////////////////////
////////////////////////// Data //////////////////////////////
//////////////////////////////////////////////////////////////
var data = [
{ name: 'Allocated budget',
axes: [
{axis: 'Sales', value: 42},
{axis: 'Marketing', value: 20},
{axis: 'Development', value: 60},
{axis: 'Customer Support', value: 26},
{axis: 'Information Technology', value: 35},
{axis: 'Administration', value: 20}
]
},
{ name: 'Actual Spending',
axes: [
{axis: 'Sales', value: 50},
{axis: 'Marketing', value: 45},
{axis: 'Development', value: 20},
{axis: 'Customer Support', value: 20},
{axis: 'Information Technology', value: 25},
{axis: 'Administration', value: 23}
]
}
];
//////////////////////////////////////////////////////////////
////// First example /////////////////////////////////////////
///// (not so much options) //////////////////////////////////
//////////////////////////////////////////////////////////////
var radarChartOptions = {
w: 290,
h: 350,
margin: margin,
levels: 5,
roundStrokes: true,
color: d3.scaleOrdinal().range(["#26AF32", "#762712"]),
format: '.0f'
};
// Draw the chart, get a reference the created svg element :
let svg_radar1 = RadarChart(".radarChart", data, radarChartOptions);
//////////////////////////////////////////////////////////////
///// Second example /////////////////////////////////////////
///// Chart legend, custom color, custom unit, etc. //////////
//////////////////////////////////////////////////////////////
var radarChartOptions2 = {
w: 290,
h: 350,
margin: margin,
maxValue: 60,
levels: 6,
roundStrokes: false,
color: d3.scaleOrdinal().range(["#AFC52F", "#ff6600"]),
format: '.0f',
legend: { title: 'Organization XYZ', translateX: 100, translateY: 40 },
unit: '$'
};
// Draw the chart, get a reference the created svg element :
let svg_radar2 = RadarChart(".radarChart2", data, radarChartOptions2);
</script>
</body>
</html>
const re = /jsInterface.event\("user=(\d+);level/;
let playerId;
const scripts = document.querySelectorAll('script');
for (let i = 0; i < scripts.length; i++) {
const match = scripts[i].innerText.match(re);
if (match) {
playerId = +match[1];
break;
}
}
console.log(playerId) // 4180878
как можно улучшить данный код
function anagrams(word, words) {
const sample = word.split('').sort().join('');
return words.filter(function (e) {
return e.split('').sort().join('') === sample;
})
}
function anagrams(word, words) {
const length = word.length;
const sample = word.split('').sort().join('');
return words.filter(w => w.length === length)
.filter(function (e) {
return e.split('').sort().join('') === sample;
})
}
// write the function isAnagram
var isAnagram = function(test, original) {
const length = original.length;
if (length !== test.length) return false;
const A = test.toLowerCase();
const B = original.toLowerCase();
const dict = {};
for (let i=0, char, pos; i < length; i++) {
char = A[i];
pos = B.indexOf(char, +dict[char]);
if (!~pos) return false;
dict[char] = pos + 1;
}
return true;
};
extends
(расширять) родительский интерфейс:<?php
interface a
{
public function foo();
}
interface b extends a
{
public function baz(Baz $baz);
}
ModelInterface
, который бы класс Model
воплощал.ArticleInterface
, наследующий ModelInterface
:interface ArticleInterface extends ModelInterface
{
// доп. методы
}
class Article implements ArticleInterface
{
}
class Article extends Model implements ArticleInterface
<?php
interface ModelInterface
{
public function get();
public function all();
}
interface ArticleInterface extends ModelInterface
{
public function publish();
}
class Model implements ModelInterface
{
public function get()
{
return "get";
}
public function all()
{
return "all";
}
}
class Article extends Model implements ArticleInterface
{
public function publish() {
return "published!";
}
}
$article = new Article();
echo $article->get();
echo $article->publish();
$nRight = $nRight << 1;
$nRight = 55;
echo decbin($nRight); // 110111
$nRight = $nRight << 1;
echo decbin($nRight); // 1101110
echo $nRight; // 110 в десятичной ( это 55 * 2 )
$all = $nRight . pack('C', 0);
typeof
будет равен "function" и для Object, String, Date, например — что не входит в ваши планы.callback && callback();
Object.prototype.toString.call(callback) === '[object Function]'
и для вас можно так:callback && Object.prototype.toString.call(callback) === '[object Function]' && callback();
curl
или школьным file_get_contents()
дергать некий локальный URL.inBetween(3, 6)
возвращает не строку, не число, а функкцию. var daFunc = inBetween(3, 6); // daFunc это функция
arr.filter(daFunc);
var daFunc = function() {
console.log(arguments);
}
arr.filter(daFunc);
1«Почти» — потому, что контекст тут другой будет. Всякие a
и b
не будут определены.function daFunc() { console.log(arguments); }
arr.filter(daFunc);
arr.filter( function() { console.log(arguments); });
arguments
там никакой не внешний / родительский / фильтрованный, а свой собственный.<span>поисковая строка</span>
. Жирноту/нежирноту сделать стилями. ipinfo.io
предоставляет API, есть бесплатный план (до 50 тыс. запросов в месяц)$.get("https://ipinfo.io", function(response) {
console.log(response.ip, response.country);
}, "jsonp")
{
"ip": "134.209.xxx.xxx",
"city": "Clifton",
"region": "New Jersey",
"country": "US",
"loc": "40.8344,-74.1377",
"org": "AS14061 DigitalOcean, LLC",
"postal": "07014",
"timezone": "America/New_York",
"readme": "https://ipinfo.io/missingauth"
}