Expressions
<!--c:parent-->
<aura:component>
<aura:attribute name="parentAttr" type="String" default="parent attribute"/>
<!-- Instantiate the child component with Bound Expression -->
<c:child childAttr="{!v.parentAttr}" />
<!-- {\#v.parentAttr} will be Unbound Expression -->
</aura:component>
Bound Expressions
{!expression}
Data updates in either component are reflected through bidirectional data binding in both components. Similarly, change handlers are triggered in both the parent and child components.
Unbound Expressions
{\#expression}
Data updates behave as you would expect in JavaScript. Primitives, such as String, are passed by value, and data updates for the expression in the parent and child are decoupled. Objects, such as Array or Map, are passed by reference, so changes to the data in the child propagate to the parent. However, change handlers in the parent aren’t notified. The same behavior applies for changes in the parent propagating to the child.