When ext matches path's tail and contains a path separator.
[darwin]path.basename('aaa/bbb','/bbb');// => ''[linux]path.basename('aaa/bbb','/bbb');// => ''[win32]path.basename('aaa/bbb','/bbb');// => 'bbb'[win32]path.basename('aaa\\bbb','\\bbb');// => 'bbb'[darwin]path.basename('aaa/bbb','a/bbb');// => ''[linux]path.basename('aaa/bbb','a/bbb');// => ''[win32]path.basename('aaa/bbb','a/bbb');// => 'bbb'[win32]path.basename('aaa\\bbb','a\\bbb');// => 'bbb'$ basename aaa/bbb bbb
bbb
$ basename aaa/bbb /bbb
bbb
$ basename aaa/bbb a/bbb
bbb
When path is non-string
When ext matches path's tail and contains a path separator.
FYI,
basenamecommand behaves as follows (I checked ondarwinandlinux):