AngularJS中给$scope赋值的方式有直接赋值、使用$apply、使用$timeout等,它们之间的区别在于作用域的继承、性能、$digest循环的触发时机等方面。直接赋值是最简单、最常用的方式,但是如果在非angular事件(如setInterval)中进行赋值,就需要手动调用$apply或者$timeout来通知angular更新视图;$apply方法可以手动触发脏检查,适用于在angular之外更改数据的情况;而$timeout则在下一轮$digest循环之前执行,可以将任务推迟到当前$digest循环完成之后执行,从而避免了性能问题,但是需要注意$timeout需要注入$timeout服务。