При чтении ответов других людей кажется, что существует более или менее три аргумента в пользу динамических языков:
1) код является менее подробным. Я не нахожу это допустимым. Некоторые динамические языки являются менее подробными, чем некоторые статические. Но F# со статическим контролем типов, но статический контроль типов там не добавляет много, если таковые имеются, код. Это неявно вводится, тем не менее, но это - другая вещь.
2) "Мой любимый динамический язык X имеет мою любимую функциональную возможность Y, поэтому динамичный лучше". Не перепутывайте функциональный и динамичный (я не могу понять, почему это должно быть сказано).
3) На динамических языках Вы сразу видите свои результаты. Новости: можно сделать это с C# в Visual Studio (с 2005) также. Просто установите точку останова, запустите программу в отладчике и измените программу при отлаживании. Я делаю это все время, и это работает отлично.
Самостоятельно, я - ярый сторонник статического контроля типов по одной основной причине: пригодность для обслуживания. У меня есть система с парой 10k строки JavaScript в нем, и любой рефакторинг, который я хочу сделать, возьмет как половина дня, так как (несуществующий) компилятор не скажет мне, что испортило то переименование переменной. И это - код, который я написал сам, IMO, хорошо структурированный, также. Я не хотел бы задачу того, чтобы быть назначенным ответственный за эквивалентную динамическую систему, которую кто-то еще записал.
я предполагаю, что буду в широком масштабе downvoted для этого, но я рискну.
Как упоминал Джош, если изображение еще не полностью загружено, jQuery еще не узнает его размеры. Попробуйте сделать что-то подобное, чтобы убедиться, что вы пытаетесь получить доступ к его размерам только после того, как изображение было полностью загружено:
var img = new Image();
$(img).load( function() {
//-- you can determine the height before adding to the DOM
alert("height: " + img.height);
//-- or you can add it first...
$('body').append(img);
//-- and then check
alert($('body img').height());
}).error( function() {
//-- this will fire if the URL is invalid, or some other loading error occurs
alert("DANGER!... DANGER!...");
});
$(img).attr('src', "http://sstatic.net/so/img/logo.png");
Я предполагаю, что эта функция вызывается до завершения загрузки изображения. Можете ли вы попробовать установить задержку для функции, чтобы увидеть, действительно ли это так? В этом случае вы можете обмануть, используя таймер перед запуском функции.
Немного сложнее определить, когда изображение было загружено. Посмотрите на этот сценарий - возможно, он подойдет вам.
Попробуйте использовать предварительную загрузку изображений, вот тот , который я написал для ответа на другой вопрос .