2015-11-20 2 views
0

Я хочу, чтобы проверить, если строка получили JSON, и я попытался следующий код:попробовать/поймать, чтобы проверить JSON не работает

try { 
    JSON.parse(-10); // Same for "-10" 
}catch(e) { 
    console.log('inside catch'); 
} 

код никогда не заходит внутрь блока поймать! Почему это так?

+0

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON –

+1

Не знаете, почему вы ждете ошибки при преобразовании '-10' в json –

ответ

1

A plain value is valid JSON. Вот почему вы не регистрируете 'inside catch'.

document.write(JSON.parse(-10));

Это не является допустимым JSON, однако:

try { 
 
    JSON.parse('{'); 
 
}catch(e) { 
 
    document.write('inside catch'); 
 
}

Как вы можете видеть, try/catch работает просто отлично.

1

Я думаю, -10 действует до JSON.parse

JSON.parse('{}');    // {} 
JSON.parse('true');   // true 
JSON.parse('"foo"');   // "foo" 
JSON.parse('[1, 5, "false"]'); // [1, 5, "false"] 
JSON.parse('null');   // null 

try { 
 
    var a = JSON.parse("{[]]]["); // Same for "-10" 
 
    console.log(a); 
 
}catch(e) { 
 
    console.log('inside catch'); 
 
}