我有一个静态的javascript函数,可以采用1,2或3个参数:
function getData(id, parameters, callback) //parameters (associative array) and callback (function) are optional
Run Code Online (Sandbox Code Playgroud)
我知道我总是可以测试给定参数是否未定义,但我怎么知道传递的是参数还是回调?
这样做的最佳方法是什么?
可以传递的内容示例:
1:
getData('offers');
Run Code Online (Sandbox Code Playgroud)
2:
var array = new Array();
array['type']='lalal';
getData('offers',array);
Run Code Online (Sandbox Code Playgroud)
3:
var foo = function (){...}
getData('offers',foo);
Run Code Online (Sandbox Code Playgroud)
4:
getData('offers',array,foo);
Run Code Online (Sandbox Code Playgroud) 我认为这可能只是性能案例 - http://jsperf.com/comparing-underscore-js-isfunction-with-typeof-function/2
而且似乎typeof更快..所以我的问题是 - 哪个更适合使用?
我第一次尝试React钩子,所有看起来都很好,直到我意识到当我获取数据并更新两个不同的状态变量(数据和加载标志)时,我的组件(数据表)呈现两次,即使两个调用状态更新程序正在发生在同一个函数中.这是我的api函数,它将两个变量都返回给我的组件.
const getData = url => {
const [data, setData] = useState(null);
const [loading, setLoading] = useState(true);
useEffect(async () => {
const test = await api.get('/people')
if(test.ok){
setLoading(false);
setData(test.data.results);
}
}, []);
return { data, loading };
};
Run Code Online (Sandbox Code Playgroud)
在普通的类组件中,你只需要调用一次来更新可以是一个复杂对象的状态,但是"钩子方式"似乎是将状态分成更小的单元,其副作用似乎是多个在单独更新时呈现.任何想法如何缓解这个?
我需要循环遍历javascript对象的属性.如何判断属性是函数还是只是值?
var model =
{
propertyA: 123,
propertyB: function () { return 456; }
};
for (var property in model)
{
var value;
if(model[property] is function) //how can I tell if it is a function???
value = model[property]();
else
value = model[property];
}
Run Code Online (Sandbox Code Playgroud) 我可以将{}与true或false或本身进行比较,但是与null或undefined的比较会产生语法错误.这是因为{}是一个对象值而不是一个引用?感觉很奇怪它会是一个语法错误而不是某种运行时类型错误,或者只是工作.
为了澄清,我很好奇为什么这是一个SyntaxError,大多数情况下做的{} == {}不仅仅是SyntaxError,而且根本没有错误.
如何检查jquery上是否有函数,但函数是否在另一个.js文件中?
validation.js:
if ($.isFunction('payment')) {
$('[data-numeric]').payment('restrictNumeric');
$('.cc-number').payment('formatCardNumber');
$('.cc-exp').payment('formatCardExpiry');
$('.cc-cvc').payment('formatCardCVC');
}
Run Code Online (Sandbox Code Playgroud)
这是假的,因为func付款在payments.js中.
可能重复:
如何检查javascript变量是否为函数类型?
我如何检查变量是否是Array的函数,Array.isArray()
但是Function.isFunction不存在
我想通过"user"对象中的"name"对下面的数组进行排序
var myArr = [
{"id":1,"user":{"name":"allen","id":101}},
{"id":2,"user":{"name":"martin","id":102}}
]
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我有一个方法来排序对象数组,但我不能将它用于对象的数组
这是方法:
function dynamicSort(property) {
var sortOrder = 1;
if (property[0] === "-") {
sortOrder = -1;
property = property.substr(1);
}
return function (a, b) {
var result = (a[property] < b[property]) ? -1 : (a[property] > b[property]) ? 1 : 0;
return result * sortOrder;
}
}
Run Code Online (Sandbox Code Playgroud)
然后我可以使用这个排序:
myArr.sort(dynamicSort("id"));
Run Code Online (Sandbox Code Playgroud) 在Javascript中,我想检查一个attribut(或对象)是否是一个函数.
我现在的代码:
if (this.execute != null)
{
this.execute();
}
Run Code Online (Sandbox Code Playgroud)
错误:对象不支持此属性或方法.
我想做点什么
if (this.execute != null and isExecutableFunction(this.execute)== true )
{
this.execute();
}
Run Code Online (Sandbox Code Playgroud)
无论如何在Javascript中检查一个属性(或对象)是否是一个函数
任何帮助应该被赞赏.
谢谢.
我想将一个函数作为道具传递给组件,并在其render函数中使用它,我似乎在这里缺少了一个关键概念。
例如
index.jsx
render(<MyComponent d={data} showName = {d => d.name + ' ' + d.surname}/>, document.getElementById('app'));
Run Code Online (Sandbox Code Playgroud)
MyComponent.jsx
class MyComponent extends React.Component {
render() {
return <h1>if (typeof this.props.showName === 'function') {
//call this.props.showName(d)
}
}
}
Run Code Online (Sandbox Code Playgroud)
编辑
我希望showName属性是一个函数或一个值,并且组件不需要事先知道它。
编辑2
再次考虑,我认为我将构建一个组件,以便它既可以使用函数也可以使用值作为支撑,但是将它们分开,以便可以更好地验证它们。例如,我要么使用
<MyComponent value="some value"/>
Run Code Online (Sandbox Code Playgroud)
要么
<MyComponent calculatedValue = {// a function}/>
Run Code Online (Sandbox Code Playgroud) javascript ×9
reactjs ×2
typeof ×2
arrays ×1
jquery ×1
node.js ×1
performance ×1
react-hooks ×1
sorting ×1