相关疑难解决方法(0)

在javascript中处理可选参数

我有一个静态的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)

javascript

127
推荐指数
2
解决办法
11万
查看次数

50
推荐指数
2
解决办法
6万
查看次数

从组件中的useState多次调用状态更新程序会导致多次重新呈现

我第一次尝试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 reactjs react-hooks

48
推荐指数
6
解决办法
2万
查看次数

如何判断javascript变量是否为函数

我需要循环遍历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)

javascript typeof

27
推荐指数
2
解决办法
3万
查看次数

为什么`{} == null`会给出一个SyntaxError?

我可以将{}与true或false或本身进行比较,但是与null或undefined的比较会产生语法错误.这是因为{}是一个对象值而不是一个引用?感觉很奇怪它会是一个语法错误而不是某种运行时类型错误,或者只是工作.

为了澄清,我很好奇为什么这是一个SyntaxError,大多数情况下做的{} == {}不仅仅是SyntaxError,而且根本没有错误.

怪异行为的例子

javascript google-chrome

14
推荐指数
1
解决办法
168
查看次数

如何检查功能是否存在?

如何检查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 jquery

13
推荐指数
5
解决办法
4万
查看次数

节点js检查var是否是函数

可能重复:
如何检查javascript变量是否为函数类型?

我如何检查变量是否是Array的函数,Array.isArray() 但是Function.isFunction不存在

node.js

12
推荐指数
2
解决办法
2万
查看次数

在javascript中对对象的对象数组进行排序

我想通过"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 arrays sorting javascript-objects

5
推荐指数
1
解决办法
132
查看次数

如何检查属性是否是Javascript中的函数

在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中检查一个属性(或对象)是否是一个函数
任何帮助应该被赞赏.
谢谢.

javascript

3
推荐指数
1
解决办法
3819
查看次数

如何检查组件prop是否是React中的函数?

我想将一个函数作为道具传递给组件,并在其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 reactjs

3
推荐指数
2
解决办法
8322
查看次数