这种行为在JS里叫什么?

先上代码

 function aa(){
  alert("123");
}

var bb=aa();

上面这段代码中
var bb=aa();
这条语句属于什么行为?
是调用函数?
还是声明一个函数表达式?
我之所以这样问,是因为,这段代码alert了123,
我的疑惑在我只是声明了一个var bb却执行了函数,如果把上段代码写成一个表达式:

 var bb=function(){
  alert("123")
};

就不会alert,123

求解 谢谢

调用aa函数,将aa函数返回值赋值给bb,第二种是将函数赋值给bb,你没有调用当然不会alert

var bb=function(){
alert("123")
};
bb()

把函数aa 看成一个对象 。 括号的意思是 执行这个函数。 var bb=aa(); aa赋值给bb 并且执行了。 var bb=aa; 代表不执行 可以在写bb(); 执行。
var bb=function(){
alert("123")
};
这个是 只定义了一个函数。
写成这样子就执行了:
var bb=function(){
alert("123")
}();

js对象赋值

var bb=function(){
alert("123")
};
这只是声明了一个函数,,调用就行了,,,