КК
при обьявлении obj.x ошибки не будет. здесь сработает чейнинг, т.е что-вроде такого:
1) obj1.x = { n: 2 }
2) obj1 = { n: 2 }
чейнинг (несколько присвоений в цепочке) сработает так, выбирает правое значение от последнего (=) и присваевает его по очереди переменным находящимся слева.
итого имеем obj1 = { n: 2 }, и obj2 = { n: 1, x: { n: 2 } }, так как obj2 был ссылкой на старый obj, ему дописался х