A、功是标量,只有大小没有方向,所以A错误;B、功有正、负之分,但功的正负不是表示方向,是表示力对物体的做功效果的,所以B正确;C、发生位移是做功的必要不充分条件,若某一个力对物体不做功,说明该物体发生的位移可能与施加的力垂直,C错误;D、当摩擦力方向与位移垂直时,那么力对它不做功,故D错误;故选:B