mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-04-26 06:18:59 +00:00
39 lines
1.1 KiB
JavaScript
39 lines
1.1 KiB
JavaScript
test("basic functionality", () => {
|
|
let callHoisted = hoisted();
|
|
function hoisted() {
|
|
return "foo";
|
|
}
|
|
expect(hoisted()).toBe("foo");
|
|
expect(callHoisted).toBe("foo");
|
|
});
|
|
|
|
// First two calls produce a ReferenceError, but the declarations should be hoisted
|
|
test.skip("functions are hoisted across non-lexical scopes", () => {
|
|
expect(scopedHoisted).toBeUndefined();
|
|
expect(callScopedHoisted).toBeUndefined();
|
|
{
|
|
var callScopedHoisted = scopedHoisted();
|
|
function scopedHoisted() {
|
|
return "foo";
|
|
}
|
|
expect(scopedHoisted()).toBe("foo");
|
|
expect(callScopedHoisted).toBe("foo");
|
|
}
|
|
expect(scopedHoisted()).toBe("foo");
|
|
expect(callScopedHoisted).toBe("foo");
|
|
});
|
|
|
|
test("functions are not hoisted across lexical scopes", () => {
|
|
const test = () => {
|
|
var iife = (function () {
|
|
return declaredLater();
|
|
})();
|
|
function declaredLater() {
|
|
return "yay";
|
|
}
|
|
return iife;
|
|
};
|
|
|
|
expect(() => declaredLater).toThrow(ReferenceError);
|
|
expect(test()).toBe("yay");
|
|
});
|