Project Euler #52 - Permuted multiples
Overall, your code looks pretty decent. The indentation is spot-on, the variable names make sense, the code is clear and easy to read. But there are some big issues with your code.


The first thing that popped in my eyes was this:

if (typeof(stop)==='undefined'){


Please, don't use typeof to check if it is defined or not. You have a very interesting object called arguments.

Try this instead:

if (arguments.length &lt; 3){

A few lines below, you have this:

if (stop === null){


What if I pass undefined or false?

You need to predict those, since they are valid values and, somewhat, in context. And yes, it is possible to pass undefined to a function, in one of these ways:

range(1, undefined, 3); //simply pass undefined
range.call({}, 1, undefined, 3); //mostly the same
range.apply({}, [1,,3]); //it may happen!
//... more similar variants ...


You need to take care of those.
This is one of a few examples.

You have the following function:

function str_sorted(num){
    num = num.toString();
    arr = Array();
    for (index in num){
        arr.push(num[index]);
    }
    return arr.sort().join('');
}


Let's focus on the following bit:

arr = Array();


There are 2 wrong things here:


This is a local variable without var
You are using the Array constructor as a function
You either use [] or use new Array()


The fix is simple:

function str_sorted(num){
    var arr = [];
    num = num.toString();
    for (index in num){
        arr.push(num[index]);
    }
    return arr.sort().join('');
}


But you still have something there that's bothering me:

    num = num.toString();
    for (index in num){
        arr.push(num[index]);
    }


Why are you converting it to a string and then iterating it? Is it to sort the numbers in the string? If that's the case, here's the whole function:

function str_sorted(num){
    return num.toString().split('').sort().join('');
}


Using string.split('') will split a string by each character, making an array of numbers.
Let's check your permuted() function.

It also suffer from a tiny flaw:

function permuted(num){
    tmp = str_sorted(num);
    return tmp == str_sorted(num * 2) &amp;&amp;
           tmp == str_sorted(num * 3) &amp;&amp;
           tmp == str_sorted(num * 4) &amp;&amp;
           tmp == str_sorted(num * 5) &amp;&amp;
           tmp == str_sorted(num * 6);
}


I have no idea what you are trying to do, but here is the mistake:

tmp = str_sorted(num);


There, you forgot a var.

Change it to this:

var tmp = str_sorted(num);

Lets take a look at the find function.

This one isn't too bad:

function find(iterable, fn){
    for (num in iterable){
        if (fn(num)){
            return num;
        }
    }
}


Just more of the same:

for (num in iterable){


You forgot a var there.

Change it to this:

for (var num in iterable){

I'm not sure if this is part of the code to be reviewed or not.

But let's analyze the last line:

print(find(range(1, null), permuted));


Please, don't use print. It isn't even a standard! It's just supported in some consoles (like Chrome). Use console.log() instead.

For now, I will leave the review as is. If I find any more issues, in the future, I will check on them.