vef1-2025

Vefforritun 1 kennd haustið 2025

View the Project on GitHub vefforritun/vef1-2025

Fyrirlestur – JavaScript gildi, týpur og virkjar

Vefforritun 1 — TÖL107G

Ólafur Sverrir Kjartansson, osk@hi.is


Eloquent JavaScript

Yfirferð fylgir Eloquent JavaScript að einhverju leiti, sleppum einhverju, bætum einhverju við.


JavaScript is a prototype-based, multi-paradigm, single-threaded, dynamic language, supporting object-oriented, imperative, and declarative (e.g. functional programming) styles.

MDN: JavaScript


Sagan


If you want to write imperative code that runs in a web browser, you only have one choice: JavaScript.

Resilient Web Design, chapter 4: Languages


JavaScript borrows most of its syntax from Java, but also inherits from Awk and Perl, with some indirect influence from Self in its object prototype system.

—Brendan Eich — JavaScript 1.1 specification


Java is to JavaScript as ham is to hamster.

Resilient Web Design, chapter 4: Languages


Java VS. JavaScript

Mörg atriði eru ólík, en það sem skiptir mestu máli í fyrstu:


JavaScript túlkar


TC39


console


Athugasemdir


Týpur

Breytur í JavaScript hafa ekki týpu, gildi hafa týpu.

Í grunninn höfum við primitive týpur


object


Primitive wrappers


Strengir – string


'Tvær\nLínur\tog tab'

túlkað sem

Tvær
línur	og tab

"A newline character is written: \"\\n\"."

túlkað sem

A newline character is written: "\n"



Template literals



`1+1 eru ${1 + 1}
10*10 eru ${10 * 10}`

túlkað sem

1+1 eru 2
10*10 eru 100


number




number – virkjar


Forgangur


number – afgangs


number – NaN


isNaN


BigInt


Number.isFinite()


Number.parseInt()


Number.parseFloat()



Boolean


Einstæðir virkjar


Typeof

typeof 'halló' // "string"
typeof 1 // "number"
typeof true // "boolean"

Symbol


undefined


null



Veikar týpur


Öruggar týpur


'1' + 1 // "11"
NaN + 'a' // "NaNa"

Samanburður




1 == '1' // true
1 === '1' // false
false == 0 // true
false === 0 // false

Truthy & falsy


Falsy


Truthy


if (NaN) { return 1; } // skilar ekki 1
if ('halló') { return 1; } // skilar 1
if ('') { return 1; } // skilar ekki 1

Lógískir virkjar



Neitun


!true // false
!'' // true
!!'' // false
// falsy gildi verður „alvöru“ false

Boolean('') // false
Boolean(true) // true

ternary virki

gildi ? 'skilað ef truthy' : 'skilað ef falsy'

0 ? 'truthy' : 'falsy' // falsy
true ? 1 : 0 // 1
'' ? 'Ekki tómur' : 'Tómur' // 'Tómur'

Skammhlaup – short circuit


0 || 'bar' // 'bar'
null || 1 // '1'
'baz' && 0 // 0