From d3d95fbf988ac6f376682f99a3e2c9054a08cb89 Mon Sep 17 00:00:00 2001 From: melihguleyupoglu Date: Mon, 10 Feb 2025 19:04:21 +0300 Subject: [PATCH] docs: clarify default prop values, attribute behavior and text expressions --- .../docs/01-introduction/xx-props.md | 22 ++++++++++ .../03-template-syntax/01-basic-markup.md | 43 +++++++++++++++++++ 2 files changed, 65 insertions(+) diff --git a/documentation/docs/01-introduction/xx-props.md b/documentation/docs/01-introduction/xx-props.md index cad854d878..3deb03d693 100644 --- a/documentation/docs/01-introduction/xx-props.md +++ b/documentation/docs/01-introduction/xx-props.md @@ -26,6 +26,28 @@ You can specify a fallback value for a prop. It will be used if the component's ``` +> [!NOTE] If a prop is explicitly passed as null, the default value will not be used, and null will be assigned instead. However, if the prop is undefined or not provided at all, the default value will be used. + +```svelte + + +

The answer is {answer}

+``` + +```svelte + + + + + + + +``` + To get all properties, use rest syntax: ```svelte diff --git a/documentation/docs/03-template-syntax/01-basic-markup.md b/documentation/docs/03-template-syntax/01-basic-markup.md index b41dc187c3..12776a6f01 100644 --- a/documentation/docs/03-template-syntax/01-basic-markup.md +++ b/documentation/docs/03-template-syntax/01-basic-markup.md @@ -72,6 +72,29 @@ When the attribute name and value match (`name={name}`), they can be replaced wi --> ``` +When passing null or undefined to an attribute, the attribute is omitted from the rendered HTML. + +```svelte + + +
Attributes are not included.
+ +``` + +If an empty string ("") is assigned to an attribute, the attribute remains in the HTML but with an empty value. + +```svelte + + +
Hello
+ +``` + ## Component props By convention, values passed to components are referred to as _properties_ or _props_ rather than _attributes_, which are a feature of the DOM. @@ -154,6 +177,26 @@ A JavaScript expression can be included as text by surrounding it with curly bra {expression} ``` +When using {expression} inside markup, Svelte automatically converts the value to a string before rendering it. The conversion follows JavaScript's standard behavior: + +- Primitive values (number, boolean, string) are directly converted to strings. +- Objects call their .toString() method (if not overridden, it defaults to [object Object]). +- undefined and null are treated as empty strings (""). + +```svelte + + +

{num}

+

{bool}

+

{obj}

+

{empty}

+``` + Curly braces can be included in a Svelte template by using their [HTML entity](https://developer.mozilla.org/docs/Glossary/Entity) strings: `{`, `{`, or `{` for `{` and `}`, `}`, or `}` for `}`. If you're using a regular expression (`RegExp`) [literal notation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp#literal_notation_and_constructor), you'll need to wrap it in parentheses.