> For the complete documentation index, see [llms.txt](https://katxupa.gitbook.io/katxupa/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://katxupa.gitbook.io/katxupa/get-a-taste-of-katxupa/usage/scope-functions/distinctions.md).

# Distinctions

Because scope functions are similar in nature, it's important to understand the differences between them. There are two main differences between each scope function:

* The way they refer to the context object.
* Their return value.

**Context object:&#x20;*****this*****&#x20;or&#x20;*****it***

Inside the lambda passed to a scope function, the context object is available by a short reference instead of its actual name. Each scope function uses one of two ways to reference the context object: as a function receiver (*this*) or as a lambda argument (*it*). Both provide the same capabilities, so we describe the pros and cons of each for different use cases and provide recommendations for their use.

```typescript
function main() {
    const str = "Hello"
    // this
    str.runIt(function () {
        console.log(`The string's length: ${this.length}`)
    } );

    // it
    str.letIt(it => {
        console.log(`The string's length: ${it.length}`)
    })
}
```
