Det som du skickar in i setTimeout är ju en sträng och variabler tolkas inte om i strängar i JavaScript som det tex. funkar i PHP och Perl. Testa det här istället:
<html>
<body>
<script type="text/javascript">
function t(x){
alert(x);
setTimeout("alert('a:" + x + "');alert('b:" + x + "')",1000);
}
</script>
<a onclick="t('Hello world')">visa</a>
</body>
</html>
Du kan skicka annat än strängar till setTimeout om du vill:
<!doctype html>
<script>
function t(x) {
alert(x);
(function(foo) {
setTimeout(function() {
alert("a: " + foo);
alert("b: " + foo);
alert("men x är: " + x);
}, 2000);
})(x);
x = "YEAH!"; // foo påverkas inte även om x ändras senare (kanske inte så nödvändigt här ... :)
}
</script>
<p><a onclick="t('Hello world')">Visa</a>