自调用功能

时间:2018-09-09 01:10:54

标签: javascript function self-invoking-function

使用的重要性!在这段代码中

  var testValue;
!function test(){testValue = 3; }();
console.log(testValue);
 

2 个答案:

答案 0 :(得分:3)

!指示解释器将后面的内容解析为表达式,而不是将其解析为函数声明。函数声明不能在同一行上调用,因此,如果没有!,将抛出SyntaxError

var testValue;
function test() { testValue = 3; }();
console.log(testValue);

只有函数 expressions 可以立即被调用。不过,为了表示一个函数表达式,在函数周围使用括号而不是!可能会更清楚,并且如果函数名称为test,那么命名函数var testValue; (() => { testValue = 3; })(); console.log(testValue);并没有太多意义。没在任何地方使用过,例如:

public class RoomAdapter extends RecyclerView.Adapter<RoomAdapter.RoomViewHolder> {

private List <RoomPojo> word;


public RoomAdapter(List <RoomPojo> word1){
    this.word = word1;

}
    @NonNull

    @Override
    public RoomViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

        View layoutInflater = LayoutInflater.from(parent.getContext()).inflate(R.layout.word_item,parent,false);

        return new RoomViewHolder(layoutInflater);
    }

    @Override
    public void onBindViewHolder(@NonNull RoomViewHolder holder, int position) {

        holder.wordTextView.setText(word.get(position).getWord());
    }

    @Override
    public int getItemCount() {
        return word.size();
    }

    public class RoomViewHolder extends RecyclerView.ViewHolder{

        private TextView wordTextView;
        public RoomViewHolder(View itemView) {
            super(itemView);

            wordTextView = itemView.findViewById(R.id.display_word);

        }
    }
}

答案 1 :(得分:0)

函数不是自动对象。您应该在方括号内定义它或将其分配给变量。如果使用!用于功能定义。它的意思是     !(function(){console.log(“ hi”);}) 现在,您可以插入()来运行该功能。