{"id":3010,"date":"2025-04-28T13:49:57","date_gmt":"2025-04-28T13:49:57","guid":{"rendered":"https:\/\/www.andrefelizardo.com.br\/blog\/?p=3010"},"modified":"2025-04-28T13:57:14","modified_gmt":"2025-04-28T13:57:14","slug":"comparando-strings-em-javascript-e-porque-parece-errado","status":"publish","type":"post","link":"https:\/\/www.andrefelizardo.com.br\/blog\/comparando-strings-em-javascript-e-porque-parece-errado\/","title":{"rendered":"Comparando strings em Javascript e porque parece errado"},"content":{"rendered":"\n<p>Muitas vezes Javascript \u00e9 motivo de piadas\/memes de algu\u00e9m dizendo que o funcionamento do Javascript \u00e9 estranho quando compara algumas coisas. Mas em geral, isso \u00e9 s\u00f3 falta de conhecimento de como a linguagem funciona por baixo dos panos.<\/p>\n\n\n\n<p>E uma desses tipos de compara\u00e7\u00f5es que parecem erradas \u00e9 a compara\u00e7\u00e3o de strings.<\/p>\n\n\n\n<!--more-->\n\n\n\n<h2 class=\"wp-block-heading\">Comparando strings<\/h2>\n\n\n\n<p><code>Strings<\/code> s\u00e3o comparadas caracter por caracter e em ordem alfab\u00e9tica. Algumas regras importantes s\u00e3o:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Uma letra min\u00fascula \u00e9 sempre maior que a mesma letra mai\u00fascula:\n<ul class=\"wp-block-list\">\n<li><code>console.log(\"a\" &gt; \"Z\"); \/\/true<\/code><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Letras com marcas\/sinais diacr\u00edticas s\u00e3o \u201cfora de ordem\u201d:\n<ul class=\"wp-block-list\">\n<li><code>console.log(\"\u00d6sterreich\" &gt; \"Zealand\"); \/\/true<\/code><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Marcas diacr\u00edticas s\u00e3o sinais gr\u00e1ficos que s\u00e3o adicionados a uma letra ou grifo para indicar um significado espec\u00edfico como a pron\u00fancia ou a diferencia\u00e7\u00e3o entre palavras. Cedilha, acento agudo, crase, acento circunflexo s\u00e3o exemplos de diacr\u00edticos.<\/p>\n<\/blockquote>\n\n\n\n<p>Essa regra das marcas diacr\u00edticas pode causar estranhamento se tentarmos por exemplo ordenar uma lista de pa\u00edses em ordem alfab\u00e9tica. A maioria imaginaria que \u201c<em>Zealand<\/em>\u201d viria depois de \u201c<em>\u00d6sterreich<\/em>\u201d o que n\u00e3o \u00e9 verdade.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Encoded strings<\/h2>\n\n\n\n<p>Para entender porque isso acontece precisamos entrar no Javascript de maneira mais profunda, observando que strings s\u00e3o <em>encoded <\/em>em <code>UTF-16<\/code>, ou seja, cada caractere tem um n\u00famero correspondente. Voc\u00ea pode verificar isso executando <code>str.codePointAt(pos)<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>console.log(\"Z\".codePointAt(0)); \/\/90\nconsole.log(\"z\".codePointAt(0)); \/\/122<\/code><\/pre>\n\n\n\n<p>Tamb\u00e9m d\u00e1 para fazer o caminho inverso, criando um caractere a partir da sua representa\u00e7\u00e3o num\u00e9rica:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>console.log(String.fromCodePoint(90)); \/\/Z<\/code><\/pre>\n\n\n\n<p>Se a gente quisesse imprimir todos os caracteres do alfabeto (latino) em uma string o c\u00f3digo seria:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>let str = \"\";\n\nfor (let i = 65; i &lt;= 220; i++) {\n    str += String.fromCodePoint(i);\n}\n\nconsole.log(str); \/\/ ABCDEFGHIJKLMNOPQRSTUVWXYZ&#91;\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u0080\u0081\u0082\u0083\u0084\n\/\/ \u00a1\u00a2\u00a3\u00a4\u00a5\u00a6\u00a7\u00a8\u00a9\u00aa\u00ab\u00ac\u00ad\u00ae\u00af\u00b0\u00b1\u00b2\u00b3\u00b4\u00b5\u00b6\u00b7\u00b8\u00b9\u00ba\u00bb\u00bc\u00bd\u00be\u00bf\u00c0\u00c1\u00c2\u00c3\u00c4\u00c5\u00c6\u00c7\u00c8\u00c9\u00ca\u00cb\u00cc\u00cd\u00ce\u00cf\u00d0\u00d1\u00d2\u00d3\u00d4\u00d5\u00d6\u00d7\u00d8\u00d9\u00da\u00db\u00dc<\/code><\/pre>\n\n\n\n<p>Se voc\u00ea reparou bem, percebeu que as letras mai\u00fasculas vem antes das min\u00fasculas, e todas elas antes das letras com acentos. \u00c9 por esse motivo que <code>a &gt; Z<\/code>. Os caracteres s\u00e3o comparados por seus c\u00f3digos num\u00e9ricos. Quando comparamos strings o caractere \u201cmaior\u201d significa que o c\u00f3digo daquele caractere \u00e9 maior do que o outro.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Comparando strings do jeito certo<\/h2>\n\n\n\n<p>O algoritmo correto para comparar strings pode ser mais complexo do que parece porque alfabetos s\u00e3o diferentes para idiomas diferentes. Ent\u00e3o, o browser precisa saber o idioma que queremos comparar.<\/p>\n\n\n\n<p>Felizmente, browsers modernos suportam internacionaliza\u00e7\u00e3o provendo um m\u00e9todo especial para comparar strings em idiomas diferentes seguindo regras.<\/p>\n\n\n\n<p>Chamar <code>str.localeCompare(str2)<\/code> retorna um inteiro indicando se <code>str<\/code> \u00e9 menor, igual ou maior que <code>str2<\/code> de acordo com as regras do idioma:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Retorna um n\u00famero negativo se <code>str<\/code> \u00e9 menor que <code>str2<\/code>.<\/li>\n\n\n\n<li>Retorna um n\u00famero positivo se <code>str<\/code> \u00e9 maior que <code>str2<\/code>.<\/li>\n\n\n\n<li>Retorna <code>0<\/code> se <code>str<\/code> e <code>str2<\/code> s\u00e3o equivalentes.<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>console.log(\"\u00d6sterreich\".localeCompare(\"Zealand\")); \/\/-1<\/code><\/pre>\n\n\n\n<p>Esse m\u00e9todo (<code>localeCompare<\/code>) tem mais 2 argumentos adicionais, que permitem especificar o idioma (por padr\u00e3o pego do ambiente, ordem das letras depende do idioma) e configurar regras adicionais como case sensitive ou se <code>\u201da\u201d<\/code>e <code>\u201d\u00e1\u201d<\/code> deveriam ser tratadas como a mesma coisa, etc.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Refer\u00eancias<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/String\">https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/String<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/javascript.info\/string\">https:\/\/javascript.info\/string<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/String\/localeCompare\">https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/String\/localeCompare<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/ecma-international.org\/publications-and-standards\/standards\/ecma-402\/\">https:\/\/ecma-international.org\/publications-and-standards\/standards\/ecma-402\/<\/a><\/li>\n<\/ul>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Muitas vezes Javascript \u00e9 motivo de piadas\/memes de algu\u00e9m dizendo que o funcionamento do Javascript \u00e9 estranho quando compara algumas coisas. Mas em geral, isso \u00e9 s\u00f3 falta de conhecimento de como a linguagem funciona por baixo dos panos. E uma desses tipos de compara\u00e7\u00f5es que parecem erradas \u00e9 a compara\u00e7\u00e3o de strings.<\/p>\n","protected":false},"author":1,"featured_media":3011,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[5],"tags":[],"class_list":["post-3010","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tecnologia"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Comparando strings em Javascript e porque parece errado - Blog do Andr\u00e9 Felizardo<\/title>\n<meta name=\"description\" content=\"Porque comparar strings em Javascript parece errado? Entenda de verdade como funcionam as compara\u00e7\u00f5es de string em Javascript\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.andrefelizardo.com.br\/blog\/comparando-strings-em-javascript-e-porque-parece-errado\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Comparando strings em Javascript e porque parece errado - Blog do Andr\u00e9 Felizardo\" \/>\n<meta property=\"og:description\" content=\"Porque comparar strings em Javascript parece errado? Entenda de verdade como funcionam as compara\u00e7\u00f5es de string em Javascript\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.andrefelizardo.com.br\/blog\/comparando-strings-em-javascript-e-porque-parece-errado\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog do Andr\u00e9 Felizardo\" \/>\n<meta property=\"article:published_time\" content=\"2025-04-28T13:49:57+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-04-28T13:57:14+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2025\/04\/Comparando-strings-Javascript.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1536\" \/>\n\t<meta property=\"og:image:height\" content=\"805\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Andr\u00e9 Felizardo\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andr\u00e9 Felizardo\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/comparando-strings-em-javascript-e-porque-parece-errado\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/comparando-strings-em-javascript-e-porque-parece-errado\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Felizardo\",\"@id\":\"http:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/7ffba68b251851fb519600e2e387a02b\"},\"headline\":\"Comparando strings em Javascript e porque parece errado\",\"datePublished\":\"2025-04-28T13:49:57+00:00\",\"dateModified\":\"2025-04-28T13:57:14+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/comparando-strings-em-javascript-e-porque-parece-errado\\\/\"},\"wordCount\":488,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/comparando-strings-em-javascript-e-porque-parece-errado\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/Comparando-strings-Javascript.png\",\"articleSection\":[\"Tecnologia\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/comparando-strings-em-javascript-e-porque-parece-errado\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/comparando-strings-em-javascript-e-porque-parece-errado\\\/\",\"url\":\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/comparando-strings-em-javascript-e-porque-parece-errado\\\/\",\"name\":\"Comparando strings em Javascript e porque parece errado - Blog do Andr\u00e9 Felizardo\",\"isPartOf\":{\"@id\":\"http:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/comparando-strings-em-javascript-e-porque-parece-errado\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/comparando-strings-em-javascript-e-porque-parece-errado\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/Comparando-strings-Javascript.png\",\"datePublished\":\"2025-04-28T13:49:57+00:00\",\"dateModified\":\"2025-04-28T13:57:14+00:00\",\"author\":{\"@id\":\"http:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/7ffba68b251851fb519600e2e387a02b\"},\"description\":\"Porque comparar strings em Javascript parece errado? Entenda de verdade como funcionam as compara\u00e7\u00f5es de string em Javascript\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/comparando-strings-em-javascript-e-porque-parece-errado\\\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/comparando-strings-em-javascript-e-porque-parece-errado\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/comparando-strings-em-javascript-e-porque-parece-errado\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/Comparando-strings-Javascript.png\",\"contentUrl\":\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/Comparando-strings-Javascript.png\",\"width\":1536,\"height\":805},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/comparando-strings-em-javascript-e-porque-parece-errado\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"http:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Comparando strings em Javascript e porque parece errado\"}]},{\"@type\":\"WebSite\",\"@id\":\"http:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/#website\",\"url\":\"http:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/\",\"name\":\"Blog do Andr\u00e9 Felizardo\",\"description\":\"Programa\u00e7\u00e3o de dev para dev\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Person\",\"@id\":\"http:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/7ffba68b251851fb519600e2e387a02b\",\"name\":\"Andr\u00e9 Felizardo\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/wp-content\\\/wphb-cache\\\/gravatar\\\/9f9\\\/9f92d8b773ef5acf9b462d6dab41d783x96.jpg\",\"url\":\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/wp-content\\\/wphb-cache\\\/gravatar\\\/9f9\\\/9f92d8b773ef5acf9b462d6dab41d783x96.jpg\",\"contentUrl\":\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/wp-content\\\/wphb-cache\\\/gravatar\\\/9f9\\\/9f92d8b773ef5acf9b462d6dab41d783x96.jpg\",\"caption\":\"Andr\u00e9 Felizardo\"},\"sameAs\":[\"http:\\\/\\\/www.andrefelizardo.com.br\"],\"url\":\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/author\\\/andrefelizardo\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Comparando strings em Javascript e porque parece errado - Blog do Andr\u00e9 Felizardo","description":"Porque comparar strings em Javascript parece errado? Entenda de verdade como funcionam as compara\u00e7\u00f5es de string em Javascript","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.andrefelizardo.com.br\/blog\/comparando-strings-em-javascript-e-porque-parece-errado\/","og_locale":"pt_BR","og_type":"article","og_title":"Comparando strings em Javascript e porque parece errado - Blog do Andr\u00e9 Felizardo","og_description":"Porque comparar strings em Javascript parece errado? Entenda de verdade como funcionam as compara\u00e7\u00f5es de string em Javascript","og_url":"https:\/\/www.andrefelizardo.com.br\/blog\/comparando-strings-em-javascript-e-porque-parece-errado\/","og_site_name":"Blog do Andr\u00e9 Felizardo","article_published_time":"2025-04-28T13:49:57+00:00","article_modified_time":"2025-04-28T13:57:14+00:00","og_image":[{"width":1536,"height":805,"url":"https:\/\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2025\/04\/Comparando-strings-Javascript.png","type":"image\/png"}],"author":"Andr\u00e9 Felizardo","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Andr\u00e9 Felizardo","Est. tempo de leitura":"3 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.andrefelizardo.com.br\/blog\/comparando-strings-em-javascript-e-porque-parece-errado\/#article","isPartOf":{"@id":"https:\/\/www.andrefelizardo.com.br\/blog\/comparando-strings-em-javascript-e-porque-parece-errado\/"},"author":{"name":"Andr\u00e9 Felizardo","@id":"http:\/\/www.andrefelizardo.com.br\/blog\/#\/schema\/person\/7ffba68b251851fb519600e2e387a02b"},"headline":"Comparando strings em Javascript e porque parece errado","datePublished":"2025-04-28T13:49:57+00:00","dateModified":"2025-04-28T13:57:14+00:00","mainEntityOfPage":{"@id":"https:\/\/www.andrefelizardo.com.br\/blog\/comparando-strings-em-javascript-e-porque-parece-errado\/"},"wordCount":488,"commentCount":0,"image":{"@id":"https:\/\/www.andrefelizardo.com.br\/blog\/comparando-strings-em-javascript-e-porque-parece-errado\/#primaryimage"},"thumbnailUrl":"https:\/\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2025\/04\/Comparando-strings-Javascript.png","articleSection":["Tecnologia"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.andrefelizardo.com.br\/blog\/comparando-strings-em-javascript-e-porque-parece-errado\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.andrefelizardo.com.br\/blog\/comparando-strings-em-javascript-e-porque-parece-errado\/","url":"https:\/\/www.andrefelizardo.com.br\/blog\/comparando-strings-em-javascript-e-porque-parece-errado\/","name":"Comparando strings em Javascript e porque parece errado - Blog do Andr\u00e9 Felizardo","isPartOf":{"@id":"http:\/\/www.andrefelizardo.com.br\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.andrefelizardo.com.br\/blog\/comparando-strings-em-javascript-e-porque-parece-errado\/#primaryimage"},"image":{"@id":"https:\/\/www.andrefelizardo.com.br\/blog\/comparando-strings-em-javascript-e-porque-parece-errado\/#primaryimage"},"thumbnailUrl":"https:\/\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2025\/04\/Comparando-strings-Javascript.png","datePublished":"2025-04-28T13:49:57+00:00","dateModified":"2025-04-28T13:57:14+00:00","author":{"@id":"http:\/\/www.andrefelizardo.com.br\/blog\/#\/schema\/person\/7ffba68b251851fb519600e2e387a02b"},"description":"Porque comparar strings em Javascript parece errado? Entenda de verdade como funcionam as compara\u00e7\u00f5es de string em Javascript","breadcrumb":{"@id":"https:\/\/www.andrefelizardo.com.br\/blog\/comparando-strings-em-javascript-e-porque-parece-errado\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.andrefelizardo.com.br\/blog\/comparando-strings-em-javascript-e-porque-parece-errado\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.andrefelizardo.com.br\/blog\/comparando-strings-em-javascript-e-porque-parece-errado\/#primaryimage","url":"https:\/\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2025\/04\/Comparando-strings-Javascript.png","contentUrl":"https:\/\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2025\/04\/Comparando-strings-Javascript.png","width":1536,"height":805},{"@type":"BreadcrumbList","@id":"https:\/\/www.andrefelizardo.com.br\/blog\/comparando-strings-em-javascript-e-porque-parece-errado\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"http:\/\/www.andrefelizardo.com.br\/blog\/"},{"@type":"ListItem","position":2,"name":"Comparando strings em Javascript e porque parece errado"}]},{"@type":"WebSite","@id":"http:\/\/www.andrefelizardo.com.br\/blog\/#website","url":"http:\/\/www.andrefelizardo.com.br\/blog\/","name":"Blog do Andr\u00e9 Felizardo","description":"Programa\u00e7\u00e3o de dev para dev","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/www.andrefelizardo.com.br\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Person","@id":"http:\/\/www.andrefelizardo.com.br\/blog\/#\/schema\/person\/7ffba68b251851fb519600e2e387a02b","name":"Andr\u00e9 Felizardo","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.andrefelizardo.com.br\/blog\/wp-content\/wphb-cache\/gravatar\/9f9\/9f92d8b773ef5acf9b462d6dab41d783x96.jpg","url":"https:\/\/www.andrefelizardo.com.br\/blog\/wp-content\/wphb-cache\/gravatar\/9f9\/9f92d8b773ef5acf9b462d6dab41d783x96.jpg","contentUrl":"https:\/\/www.andrefelizardo.com.br\/blog\/wp-content\/wphb-cache\/gravatar\/9f9\/9f92d8b773ef5acf9b462d6dab41d783x96.jpg","caption":"Andr\u00e9 Felizardo"},"sameAs":["http:\/\/www.andrefelizardo.com.br"],"url":"https:\/\/www.andrefelizardo.com.br\/blog\/author\/andrefelizardo\/"}]}},"jetpack_featured_media_url":"https:\/\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2025\/04\/Comparando-strings-Javascript.png","jetpack_shortlink":"https:\/\/wp.me\/p6EP66-My","jetpack-related-posts":[{"id":943,"url":"https:\/\/www.andrefelizardo.com.br\/blog\/javascript-comecando-do-jeito-certo\/","url_meta":{"origin":3010,"position":0},"title":"JavaScript &#8211; Come\u00e7ando do jeito certo","author":"Andr\u00e9 Felizardo","date":"30 de novembro de 2017","format":false,"excerpt":"O que \u00e9 JavaScript? JavaScript \u00e9 uma linguagem de programa\u00e7\u00e3o, que foi criada originalmente para rodar em navegadores. Na tr\u00edade do Front-end, a linguagem \u00e9 respons\u00e1vel por interagir com o usu\u00e1rio (como mensagens de erro e outros), sem a necessidade das informa\u00e7\u00f5es irem at\u00e9 o servidor. O que \u00e9 JavaScript?\u2026","rel":"","context":"Em &quot;Dev&quot;","block_context":{"text":"Dev","link":"https:\/\/www.andrefelizardo.com.br\/blog\/category\/dev\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2017\/11\/javascript-comecando_jeito_certo.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2017\/11\/javascript-comecando_jeito_certo.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2017\/11\/javascript-comecando_jeito_certo.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2017\/11\/javascript-comecando_jeito_certo.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":953,"url":"https:\/\/www.andrefelizardo.com.br\/blog\/javascript-variaveis\/","url_meta":{"origin":3010,"position":1},"title":"JavaScript &#8211; Vari\u00e1veis: var, let e const","author":"Andr\u00e9 Felizardo","date":"3 de dezembro de 2017","format":false,"excerpt":"O que \u00e9 uma vari\u00e1vel? Vari\u00e1veis JavaScript s\u00e3o objetos onde n\u00f3s guardamos uma informa\u00e7\u00e3o apenas em tempo de execu\u00e7\u00e3o. Por exemplo: se voc\u00ea digita sua data de nascimento em um formul\u00e1rio, podemos guardar essa data em uma vari\u00e1vel para calcular a sua idade. Mas se voc\u00ea sair do site e\u2026","rel":"","context":"Em &quot;Dev&quot;","block_context":{"text":"Dev","link":"https:\/\/www.andrefelizardo.com.br\/blog\/category\/dev\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2017\/12\/javascript-variaveis.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2017\/12\/javascript-variaveis.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2017\/12\/javascript-variaveis.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2017\/12\/javascript-variaveis.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":799,"url":"https:\/\/www.andrefelizardo.com.br\/blog\/angular-2-nao-continuacao-do-angular-1\/","url_meta":{"origin":3010,"position":2},"title":"Angular 2 &#8211; A n\u00e3o continua\u00e7\u00e3o do Angular 1","author":"Andr\u00e9 Felizardo","date":"15 de janeiro de 2017","format":false,"excerpt":"T\u00e1 estudando Angular 2? N\u00e3o? Fica ligado que a gente j\u00e1 est\u00e1 no Angular 4 beta 3! Angular 2 foi oficialmente lan\u00e7ado em setembro de 2016. Mas tamb\u00e9m n\u00e3o precisa ficar t\u00e3o preocupado. De qualquer forma vamos colocar os pingos nos is\u00a0pra voc\u00ea entender de uma vez por toda o\u2026","rel":"","context":"Em &quot;Dev&quot;","block_context":{"text":"Dev","link":"https:\/\/www.andrefelizardo.com.br\/blog\/category\/dev\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2017\/01\/angular2.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2017\/01\/angular2.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2017\/01\/angular2.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2017\/01\/angular2.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":981,"url":"https:\/\/www.andrefelizardo.com.br\/blog\/jasmine-testando-seu-codigo-javascript\/","url_meta":{"origin":3010,"position":3},"title":"Jasmine &#8211; Testando seu c\u00f3digo JavaScript","author":"Andr\u00e9 Felizardo","date":"3 de fevereiro de 2018","format":false,"excerpt":"Conforme evolu\u00edmos na complexidade das aplica\u00e7\u00f5es de front-end que desenvolvemos, uma necessidade come\u00e7a a se tornar \u00f3bvia: testar o c\u00f3digo JavaScript. Jasmine \u00e9 um framework exatamente para resolver essa necessidade. Jasmine \u00e9 um framework de testes para o c\u00f3digo JavaScript, que adere aos conceitos de Behavior Driven Development. BDD Jasmine\u2026","rel":"","context":"Em &quot;Dev&quot;","block_context":{"text":"Dev","link":"https:\/\/www.andrefelizardo.com.br\/blog\/category\/dev\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2018\/02\/jasmine-logo.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2018\/02\/jasmine-logo.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2018\/02\/jasmine-logo.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2018\/02\/jasmine-logo.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":1152,"url":"https:\/\/www.andrefelizardo.com.br\/blog\/web-components-guia-geral\/","url_meta":{"origin":3010,"position":4},"title":"Web Components \u2013 Guia Geral","author":"Andr\u00e9 Felizardo","date":"20 de mar\u00e7o de 2020","format":false,"excerpt":"Neste guia veremos o que s\u00e3o web components, quando usar, sua estrutura e tamb\u00e9m um crash course criando um web component do zero que \u00e9 um card Pok\u00e9mon, com v\u00e1rios recursos interessantes. O que s\u00e3o web components Web Components s\u00e3o elementos customizados reutiliz\u00e1veis constru\u00eddos com diferentes tecnologias para serem utilizados\u2026","rel":"","context":"Em &quot;Dev&quot;","block_context":{"text":"Dev","link":"https:\/\/www.andrefelizardo.com.br\/blog\/category\/dev\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2020\/03\/capa-web-components-1.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2020\/03\/capa-web-components-1.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2020\/03\/capa-web-components-1.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2020\/03\/capa-web-components-1.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2020\/03\/capa-web-components-1.png?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2020\/03\/capa-web-components-1.png?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":706,"url":"https:\/\/www.andrefelizardo.com.br\/blog\/react-js-o-que-e-introducao-ao-react\/","url_meta":{"origin":3010,"position":5},"title":"React.js, o que \u00e9? &#8211; Introdu\u00e7\u00e3o ao React","author":"Andr\u00e9 Felizardo","date":"18 de outubro de 2016","format":false,"excerpt":"Se voc\u00ea tem acompanhado o mundo do Front-end nos \u00faltimos anos, com certeza voc\u00ea percebeu um boom em Frameworks e bibliotecas Javascript, como o AngularJS, React.js e v\u00e1rios outros. O que \u00e9 o React.js? React.js \u00e9 uma biblioteca JavaScript, desenvolvida por engenheiros\u00a0do Facebook (s\u00f3 de colocar o nome do Facebook\u2026","rel":"","context":"Em &quot;Curiosidades&quot;","block_context":{"text":"Curiosidades","link":"https:\/\/www.andrefelizardo.com.br\/blog\/category\/curiosidades\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2016\/10\/react.js.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2016\/10\/react.js.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2016\/10\/react.js.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2016\/10\/react.js.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2016\/10\/react.js.png?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2016\/10\/react.js.png?resize=1400%2C800&ssl=1 4x"},"classes":[]}],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.andrefelizardo.com.br\/blog\/wp-json\/wp\/v2\/posts\/3010","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.andrefelizardo.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.andrefelizardo.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.andrefelizardo.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.andrefelizardo.com.br\/blog\/wp-json\/wp\/v2\/comments?post=3010"}],"version-history":[{"count":0,"href":"https:\/\/www.andrefelizardo.com.br\/blog\/wp-json\/wp\/v2\/posts\/3010\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.andrefelizardo.com.br\/blog\/wp-json\/wp\/v2\/media\/3011"}],"wp:attachment":[{"href":"https:\/\/www.andrefelizardo.com.br\/blog\/wp-json\/wp\/v2\/media?parent=3010"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.andrefelizardo.com.br\/blog\/wp-json\/wp\/v2\/categories?post=3010"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.andrefelizardo.com.br\/blog\/wp-json\/wp\/v2\/tags?post=3010"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}