I was curious about why it didn't work so started testing my self. I got it finally working, using an example from msdn (https://msdn.microsoft.com/fr-fr/library/office/hh185009(v=office.14).aspx). Try using following code to see if you it return a default value:
function retrieveAllListsAllFields() {
var clientContext = new SP.ClientContext.get_current();
var oWebsite = clientContext.get_web();
var collList = oWebsite.get_lists();
this.listInfoArray = clientContext.loadQuery(collList,
'Include(Title,Fields.Include(Title,InternalName, DefaultValue))');
clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded),
Function.createDelegate(this, this._onQueryFailed));
}
function onQuerySucceeded() {
var listInfo = '';
for (var i = 0; i < this.listInfoArray.length; i++) {
var oList = this.listInfoArray[i];
var collField = oList.get_fields();
var fieldEnumerator = collField.getEnumerator();
while (fieldEnumerator.moveNext()) {
var oField = fieldEnumerator.get_current();
listInfo += '\nList: ' + oList.get_title() +
'\n\tField Title: ' + oField.get_title() +
'\n\tField DefaultValue: ' + oField.get_defaultValue();
}
}
console.log(listInfo);
}
function onQueryFailed(sender, args) {
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}
SP.SOD.executeFunc("sp.js", "SP.ClientContext", function () {
retrieveAllListsAllFields();
});
I tested on SharePoint Online with a managed metadata field and it return the default value in this format: 5;#testLevel2|8e5ede37-1722-4b4e-928c-8e15b52a2bd2