diff --git a/app/assets/javascripts/app/helpers/handlebars-helpers.js b/app/assets/javascripts/app/helpers/handlebars-helpers.js
index c6a9254b64079444065f2fc82028d7fbd7fdfd81..c428bfdd74cb0a9797dcea2166e1883bc3c0cdd3 100644
--- a/app/assets/javascripts/app/helpers/handlebars-helpers.js
+++ b/app/assets/javascripts/app/helpers/handlebars-helpers.js
@@ -61,7 +61,7 @@ Handlebars.registerHelper('sharingMessage', function(person) {
 // allow hovercards for users that are not the current user.
 // returns the html class name used to trigger hovercards.
 Handlebars.registerHelper('hovercardable', function(person) {
-  if( app.currentUser.get('guid') != person.guid ) {
+  if( app.currentUser.get('guid') !== person.guid ) {
     return 'hovercardable';
   }
   return '';
@@ -104,7 +104,7 @@ Handlebars.registerHelper('fmtText', function(text) {
 
 Handlebars.registerHelper('isCurrentPage', function(path_helper, id, options){
   var currentPage = "/"+Backbone.history.fragment;
-  if (currentPage == Handlebars.helpers.urlTo(path_helper, id, options.data)) {
+  if (currentPage === Handlebars.helpers.urlTo(path_helper, id, options.data)) {
     return options.fn(this);
   } else {
     return options.inverse(this);
@@ -121,7 +121,7 @@ Handlebars.registerHelper('aspectMembershipIndicator', function(contact,in_aspec
   if(!app.aspect || !app.aspect.get('id')) return '<div class="aspect_membership_dropdown placeholder"></div>';
 
   var html = '<i class="entypo ';
-  if( in_aspect == 'in_aspect' ) {
+  if( in_aspect === 'in_aspect' ) {
     html += 'circled-cross contact_remove-from-aspect" ';
     html += 'title="' + Diaspora.I18n.t('contacts.remove_contact') + '" ';
   } else {
diff --git a/app/assets/javascripts/app/helpers/o_embed.js b/app/assets/javascripts/app/helpers/o_embed.js
index c09df1798ce8386ecff797e95cad3a31e06aab54..67d2e97179d090a1ee605d11d75d2c54eea9be23 100644
--- a/app/assets/javascripts/app/helpers/o_embed.js
+++ b/app/assets/javascripts/app/helpers/o_embed.js
@@ -6,7 +6,7 @@
       if (!o_embed_cache) { return "" }
 
       var data = o_embed_cache.data;
-      if (data.type == "photo") {
+      if (data.type === "photo") {
         return '<img src="' + data.url + '" width="' + data.width + '" height="' + data.height + '" />';
       } else {
         return data.html || "";
diff --git a/app/assets/javascripts/app/helpers/text_formatter.js b/app/assets/javascripts/app/helpers/text_formatter.js
index 2e0c7b7ca21eaa0b5e005534efc488f3f14cf668..fefcfa2b8aeb85010fa051fba82a4ff624ed48bd 100644
--- a/app/assets/javascripts/app/helpers/text_formatter.js
+++ b/app/assets/javascripts/app/helpers/text_formatter.js
@@ -6,7 +6,7 @@
 
     var punycodeURL = function(url){
       try {
-        while(url.indexOf("%") !== -1 && url != decodeURI(url)) url = decodeURI(url);
+        while(url.indexOf("%") !== -1 && url !== decodeURI(url)) url = decodeURI(url);
       }
       catch(e){}
 
@@ -15,7 +15,7 @@
 
       url = // rebuild the url
         (!addr.scheme ? '' : addr.scheme +
-        ( (addr.scheme.toLowerCase()=="mailto" || addr.scheme.toLowerCase()=="xmpp") ? ':' : '://')) +
+        ( (addr.scheme.toLowerCase() === "mailto" || addr.scheme.toLowerCase() === "xmpp") ? ':' : '://')) +
         (!addr.user ? '' : addr.user +
         (!addr.pass ? '' : ':'+addr.pass) + '@') +
         punycode.toASCII(addr.host) +
diff --git a/app/assets/javascripts/app/models/contact.js b/app/assets/javascripts/app/models/contact.js
index a1e014c4c1340ebc20d38cdd7e51bc7dd838f76f..5457f2c4e6f989a78355e4023ac771fe3a974be2 100644
--- a/app/assets/javascripts/app/models/contact.js
+++ b/app/assets/javascripts/app/models/contact.js
@@ -7,7 +7,7 @@ app.models.Contact = Backbone.Model.extend({
   },
 
   inAspect : function(id) {
-    return this.aspect_memberships.any(function(membership){ return membership.get('aspect').id == id; });
+    return this.aspect_memberships.any(function(membership){ return membership.get('aspect').id === id; });
   }
 });
 // @license-end
diff --git a/app/assets/javascripts/app/models/person.js b/app/assets/javascripts/app/models/person.js
index 79a04c067e12c41c9272e0c0213cbacb6c8a913a..0cfcc9f669765eaaac74eab00c8bdd49c7458317 100644
--- a/app/assets/javascripts/app/models/person.js
+++ b/app/assets/javascripts/app/models/person.js
@@ -12,20 +12,20 @@ app.models.Person = Backbone.Model.extend({
 
   isSharing: function() {
     var rel = this.get('relationship');
-    return (rel == 'mutual' || rel == 'sharing');
+    return (rel === 'mutual' || rel === 'sharing');
   },
 
   isReceiving: function() {
     var rel = this.get('relationship');
-    return (rel == 'mutual' || rel == 'receiving');
+    return (rel === 'mutual' || rel === 'receiving');
   },
 
   isMutual: function() {
-    return (this.get('relationship') == 'mutual');
+    return (this.get('relationship') === 'mutual');
   },
 
   isBlocked: function() {
-    return (this.get('relationship') == 'blocked');
+    return (this.get('relationship') === 'blocked');
   },
 
   block: function() {
diff --git a/app/assets/javascripts/app/models/post/interactions.js b/app/assets/javascripts/app/models/post/interactions.js
index 4ba54e01483f1f644cd4ad79907d5ac9defe1c6a..ce52650a76df8aaa8aa186bfade0882a3a5a198b 100644
--- a/app/assets/javascripts/app/models/post/interactions.js
+++ b/app/assets/javascripts/app/models/post/interactions.js
@@ -44,12 +44,12 @@ app.models.Post.Interactions = Backbone.Model.extend({
   },
 
   userLike : function(){
-    return this.likes.select(function(like){ return like.get("author").guid == app.currentUser.get("guid")})[0];
+    return this.likes.select(function(like){ return like.get("author").guid === app.currentUser.get("guid")})[0];
   },
 
   userReshare : function(){
     return this.reshares.select(function(reshare){
-      return reshare.get("author") &&  reshare.get("author").guid == app.currentUser.get("guid")})[0];
+      return reshare.get("author") &&  reshare.get("author").guid === app.currentUser.get("guid")})[0];
   },
 
   toggleLike : function() {
@@ -126,11 +126,11 @@ app.models.Post.Interactions = Backbone.Model.extend({
   },
 
   userCanReshare : function(){
-    var isReshare = this.post.get("post_type") == "Reshare"
+    var isReshare = this.post.get("post_type") === "Reshare"
       , rootExists = (isReshare ? this.post.get("root") : true)
       , publicPost = this.post.get("public")
-      , userIsNotAuthor = this.post.get("author").diaspora_id != app.currentUser.get("diaspora_id")
-      , userIsNotRootAuthor = rootExists && (isReshare ? this.post.get("root").author.diaspora_id != app.currentUser.get("diaspora_id") : true)
+      , userIsNotAuthor = this.post.get("author").diaspora_id !== app.currentUser.get("diaspora_id")
+      , userIsNotRootAuthor = rootExists && (isReshare ? this.post.get("root").author.diaspora_id !== app.currentUser.get("diaspora_id") : true)
       , notReshared = !this.userReshare();
 
     return publicPost && app.currentUser.authenticated() && userIsNotAuthor && userIsNotRootAuthor && notReshared;
diff --git a/app/assets/javascripts/app/models/stream.js b/app/assets/javascripts/app/models/stream.js
index f66cc068676e2f975d26f4559ebd834674d2f81f..8ac6c3ebf7666d293da5a11cbbe508ebfcb9bb6d 100644
--- a/app/assets/javascripts/app/models/stream.js
+++ b/app/assets/javascripts/app/models/stream.js
@@ -35,7 +35,7 @@ app.models.Stream = Backbone.Collection.extend({
   },
 
   isFetching : function() {
-    return (this.deferred && this.deferred.state() == "pending");
+    return (this.deferred && this.deferred.state() === "pending");
   },
 
   triggerFetchedEvents : function(resp){
diff --git a/app/assets/javascripts/app/models/user.js b/app/assets/javascripts/app/models/user.js
index df8974ff05a03e8bf2e1377d139a8581c44d778b..fabf5817d31cf16831cbab8999d3774762d3c552 100644
--- a/app/assets/javascripts/app/models/user.js
+++ b/app/assets/javascripts/app/models/user.js
@@ -20,7 +20,7 @@ app.models.User = Backbone.Model.extend({
   },
 
   isAuthorOf: function(model) {
-    return this.authenticated() && model.get("author").id == this.id;
+    return this.authenticated() && model.get("author").id === this.id;
   }
 });
 // @license-end
diff --git a/app/assets/javascripts/app/router.js b/app/assets/javascripts/app/router.js
index 7b2d4db1053b382f59e717cc78a8ed65b9877efd..e700c9cfde3ff45cc49446532e9cff7ea032a3cf 100644
--- a/app/assets/javascripts/app/router.js
+++ b/app/assets/javascripts/app/router.js
@@ -143,10 +143,10 @@ app.Router = Backbone.Router.extend({
   },
 
   _hideInactiveStreamLists: function() {
-    if(this.aspects_list && Backbone.history.fragment != "aspects")
+    if(this.aspects_list && Backbone.history.fragment !== "aspects")
       this.aspects_list.hideAspectsList();
 
-    if(this.followedTagsView && Backbone.history.fragment != "followed_tags")
+    if(this.followedTagsView && Backbone.history.fragment !== "followed_tags")
       this.followedTagsView.hideFollowedTags();
   },
 
diff --git a/app/assets/javascripts/app/views/aspect_membership_blueprint_view.js b/app/assets/javascripts/app/views/aspect_membership_blueprint_view.js
index 622ba3d7c3214c0393bca4b2934494d462cde636..d7e95bdac01951089bf6b9d38765997bfbb67ddf 100644
--- a/app/assets/javascripts/app/views/aspect_membership_blueprint_view.js
+++ b/app/assets/javascripts/app/views/aspect_membership_blueprint_view.js
@@ -157,11 +157,11 @@ app.views.AspectMembershipBlueprint = Backbone.View.extend({
   _pluralSummaryTxt: function(cnt) {
     var all_aspects_cnt = this.dropdown.find('li').length;
 
-    if( cnt == 1 ) {
+    if( cnt === 1 ) {
       return this.dropdown.find('li.selected').first().text();
     }
 
-    if( cnt == all_aspects_cnt ) {
+    if( cnt === all_aspects_cnt ) {
       return Diaspora.I18n.t('aspect_dropdown.all_aspects');
     }
 
diff --git a/app/assets/javascripts/app/views/aspects_dropdown_view.js b/app/assets/javascripts/app/views/aspects_dropdown_view.js
index c87ed275bbae1e429f593f81d947c0ae5313909a..70e446704c838a216e50db5709f1da731dc6c29d 100644
--- a/app/assets/javascripts/app/views/aspects_dropdown_view.js
+++ b/app/assets/javascripts/app/views/aspects_dropdown_view.js
@@ -37,7 +37,7 @@ app.views.AspectsDropdown = app.views.Base.extend({
       buttonText = Diaspora.I18n.t("aspect_dropdown.select_aspects");
     } else {
       button.removeClass('btn-default').addClass(inAspectClass);
-      if (selectedAspects == 1) {
+      if (selectedAspects === 1) {
         buttonText = this.$(".dropdown-menu > li.selected .text").first().text();
       } else {
         buttonText = Diaspora.I18n.t("aspect_dropdown.toggle", { count: selectedAspects.toString() });
diff --git a/app/assets/javascripts/app/views/comment_stream_view.js b/app/assets/javascripts/app/views/comment_stream_view.js
index 425654d93269c59153f02c70893d6fb7056b78bb..73bc7feda0f165d481f2515805ef54408839d431 100644
--- a/app/assets/javascripts/app/views/comment_stream_view.js
+++ b/app/assets/javascripts/app/views/comment_stream_view.js
@@ -57,7 +57,7 @@ app.views.CommentStream = app.views.Base.extend({
   },
 
   keyDownOnCommentBox: function(evt) {
-    if(evt.keyCode == 13 && evt.ctrlKey) {
+    if(evt.keyCode === 13 && evt.ctrlKey) {
       this.$("form").submit();
       return false;
     }
diff --git a/app/assets/javascripts/app/views/comment_view.js b/app/assets/javascripts/app/views/comment_view.js
index ca9965c66b0fdd9d63304d5b5198a0bfee7d9003..7f74d1146ae8223da7f1c05e87a7260ff6cfb171 100644
--- a/app/assets/javascripts/app/views/comment_view.js
+++ b/app/assets/javascripts/app/views/comment_view.js
@@ -25,11 +25,11 @@ app.views.Comment = app.views.Content.extend({
   },
 
   ownComment : function() {
-    return app.currentUser.authenticated() && this.model.get("author").diaspora_id == app.currentUser.get("diaspora_id");
+    return app.currentUser.authenticated() && this.model.get("author").diaspora_id === app.currentUser.get("diaspora_id");
   },
 
   postOwner : function() {
-    return  app.currentUser.authenticated() && this.model.get("parent").author.diaspora_id == app.currentUser.get("diaspora_id");
+    return  app.currentUser.authenticated() && this.model.get("parent").author.diaspora_id === app.currentUser.get("diaspora_id");
   },
 
   canRemove : function() {
diff --git a/app/assets/javascripts/app/views/contact_view.js b/app/assets/javascripts/app/views/contact_view.js
index ce07dc55dc87342421c18f92f2820d1bf56df6f4..2ac8dc772bb6eadc717414e859a10a839a7ea302 100644
--- a/app/assets/javascripts/app/views/contact_view.js
+++ b/app/assets/javascripts/app/views/contact_view.js
@@ -57,7 +57,7 @@ app.views.Contact = app.views.Base.extend({
   removeContactFromAspect: function(){
     var self = this;
     this.model.aspect_memberships
-      .find(function(membership){ return membership.get('aspect').id == app.aspect.id; })
+      .find(function(membership){ return membership.get('aspect').id === app.aspect.id; })
       .destroy({
         success: function(){
           self.render();
diff --git a/app/assets/javascripts/app/views/header_view.js b/app/assets/javascripts/app/views/header_view.js
index 31e591769c1a669cbe3ef2229563e6b7bc46ba65..eaf6e92753e80267faa362c0500decba25975de1 100644
--- a/app/assets/javascripts/app/views/header_view.js
+++ b/app/assets/javascripts/app/views/header_view.js
@@ -40,7 +40,7 @@ app.views.Header = app.views.Base.extend({
   toggleSearchActive: function(ev) {
     // jQuery produces two events for focus/blur (for bubbling)
     // don't rely on which event arrives first, by allowing for both variants
-    var is_active = (_.indexOf(['focus','focusin'], ev.type) != -1);
+    var is_active = (_.indexOf(['focus','focusin'], ev.type) !== -1);
     $(ev.target).toggleClass('active', is_active);
     return false;
   }
diff --git a/app/assets/javascripts/app/views/hovercard_view.js b/app/assets/javascripts/app/views/hovercard_view.js
index c6adc0a7159e1eee5d2c376dcc86f467b46c881d..6e3ad43e8d26b7b7d7ffc6ad691fb58a53a56104 100644
--- a/app/assets/javascripts/app/views/hovercard_view.js
+++ b/app/assets/javascripts/app/views/hovercard_view.js
@@ -49,7 +49,7 @@ app.views.Hovercard = app.views.Base.extend({
       el = el.parents('a');
     }
 
-    if( el.attr('href').indexOf('/people') == -1 ) {
+    if( el.attr('href').indexOf('/people') === -1 ) {
       // can't fetch data from that URL, aborting
       return false;
     }
diff --git a/app/assets/javascripts/app/views/infinite_stream_view.js b/app/assets/javascripts/app/views/infinite_stream_view.js
index 8e755a7f433a406eef9379e403856798a4566945..bac823ccca36603ecd0da29dafde91cb23798618 100644
--- a/app/assets/javascripts/app/views/infinite_stream_view.js
+++ b/app/assets/javascripts/app/views/infinite_stream_view.js
@@ -34,7 +34,7 @@ app.views.InfScroll = app.views.Base.extend({
 
   createPostView : function(post){
     var postView = new this.postClass({ model: post, stream: this.stream });
-    if (this.collection.at(0).id == post.id) {
+    if (this.collection.at(0).id === post.id) {
       // post is first in collection - insert view at top of the list
       this.postViews.unshift(postView);
     } else {
@@ -46,7 +46,7 @@ app.views.InfScroll = app.views.Base.extend({
   // called for every item inserted in this.collection
   addPostView : function(post) {
     var el = this.createPostView(post).render().el;
-    if (this.collection.at(0).id == post.id) {
+    if (this.collection.at(0).id === post.id) {
         this.prependedPosts.insertBefore(el, this.prependedPosts.firstChild);
     } else {
         this.appendedPosts.appendChild(el);
diff --git a/app/assets/javascripts/app/views/publisher/aspect_selector_view.js b/app/assets/javascripts/app/views/publisher/aspect_selector_view.js
index 1926f5b73770b5a6dcaf9beb72ef0532c070d759..7145de4ad56e885e70fc78e3de7914f55ba395dd 100644
--- a/app/assets/javascripts/app/views/publisher/aspect_selector_view.js
+++ b/app/assets/javascripts/app/views/publisher/aspect_selector_view.js
@@ -35,7 +35,7 @@ app.views.PublisherAspectSelector  = app.views.AspectsDropdown.extend({
     
     // update the globe or lock icon
     var icon = this.$('#visibility-icon');
-    if (target.find('.text').text().trim() == Diaspora.I18n.t('stream.public')) {
+    if (target.find('.text').text().trim() === Diaspora.I18n.t('stream.public')) {
       icon.removeClass('lock');
       icon.addClass('globe');
     } else {
diff --git a/app/assets/javascripts/app/views/publisher/getting_started_view.js b/app/assets/javascripts/app/views/publisher/getting_started_view.js
index a5896b8ad0b2f6211a9c05029e7ca9629a3fc4de..6d36a83a7af3ca5393eb5995b86114876aa69abe 100644
--- a/app/assets/javascripts/app/views/publisher/getting_started_view.js
+++ b/app/assets/javascripts/app/views/publisher/getting_started_view.js
@@ -65,7 +65,7 @@ app.views.PublisherGettingStarted = Backbone.View.extend({
       var close = $(popup).find('.close');
 
       close.click(function() {
-        if( $('.popover').length==1 ) {
+        if( $('.popover').length === 1 ) {
           $.get('/getting_started_completed', {success: function() {
             $("#welcome-to-diaspora, #welcome-to-diaspora~br").remove();
           }});
diff --git a/app/assets/javascripts/app/views/publisher_view.js b/app/assets/javascripts/app/views/publisher_view.js
index c27637d45ff23ce4a91ef2f263041800af2f7ccc..69c2d9c0581d27008ca9e772f6ecb91535303df6 100644
--- a/app/assets/javascripts/app/views/publisher_view.js
+++ b/app/assets/javascripts/app/views/publisher_view.js
@@ -74,7 +74,7 @@ app.views.Publisher = Backbone.View.extend({
     var _this = this;
     $('body').on('click', function(event){
       // if the click event is happened outside the publisher view, then try to close the box
-      if( _this.el && $(event.target).closest('#publisher').attr('id') != _this.el.id){
+      if( _this.el && $(event.target).closest('#publisher').attr('id') !== _this.el.id){
           _this.tryClose();
         }
     });
@@ -245,7 +245,7 @@ app.views.Publisher = Backbone.View.extend({
 
   // avoid submitting form when pressing Enter key
   avoidEnter: function(evt){
-    if(evt.keyCode == 13)
+    if(evt.keyCode === 13)
       return false;
   },
 
@@ -276,7 +276,7 @@ app.views.Publisher = Backbone.View.extend({
         user;
     while( (user = regexp.exec(serializedForm["status_message[text]"])) ){
       // user[1]: name, user[2]: handle
-      var mentioned_user = Mentions.contacts.filter(function(item) { return item.handle == user[2];})[0];
+      var mentioned_user = Mentions.contacts.filter(function(item) { return item.handle === user[2];})[0];
       if(mentioned_user){
         mentioned_people.push({
           "id":mentioned_user["id"],
@@ -309,7 +309,7 @@ app.views.Publisher = Backbone.View.extend({
     var previewMessage = {
       "id" : 0,
       "text" : serializedForm["status_message[text]"],
-      "public" : serializedForm["aspect_ids[]"]=="public",
+      "public" : serializedForm["aspect_ids[]"] === "public",
       "created_at" : date,
       "interacted_at" : date,
       "post_type" : "StatusMessage",
@@ -350,7 +350,7 @@ app.views.Publisher = Backbone.View.extend({
   },
 
   keyDown : function(evt) {
-    if( evt.keyCode == 13 && evt.ctrlKey ) {
+    if( evt.keyCode === 13 && evt.ctrlKey ) {
       this.$("form").submit();
       this.open();
       return false;
@@ -484,7 +484,7 @@ app.views.Publisher = Backbone.View.extend({
   },
 
   _beforeUnload: function(e) {
-    if(this._submittable() && this.el_input.val() != this.prefillText){
+    if(this._submittable() && this.el_input.val() !== this.prefillText){
       var confirmationMessage = Diaspora.I18n.t("confirm_unload");
       (e || window.event).returnValue = confirmationMessage;       //Gecko + IE
       return confirmationMessage;                                  //Webkit, Safari, Chrome, etc.
diff --git a/app/assets/javascripts/app/views/single-post-viewer/single_post_actions.js b/app/assets/javascripts/app/views/single-post-viewer/single_post_actions.js
index 4aa89f199d24afd5649eeb4af97973337db4a11f..65ea3df452fb5f3692319b626f43af0fc26075b2 100644
--- a/app/assets/javascripts/app/views/single-post-viewer/single_post_actions.js
+++ b/app/assets/javascripts/app/views/single-post-viewer/single_post_actions.js
@@ -32,7 +32,7 @@ app.views.SinglePostActions = app.views.Feedback.extend({
   },
 
   authorIsNotCurrentUser: function() {
-    return app.currentUser.authenticated() && this.model.get("author").id != app.user().id;
+    return app.currentUser.authenticated() && this.model.get("author").id !== app.user().id;
   }
 });
 // @license-end
diff --git a/app/assets/javascripts/app/views/single-post-viewer/single_post_moderation.js b/app/assets/javascripts/app/views/single-post-viewer/single_post_moderation.js
index 655acec8a9604c5534e5c1a2e6149d626e39c358..a47f42d0ad4873aafaacc97ea51b8641b7ed3fe9 100644
--- a/app/assets/javascripts/app/views/single-post-viewer/single_post_moderation.js
+++ b/app/assets/javascripts/app/views/single-post-viewer/single_post_moderation.js
@@ -19,7 +19,7 @@ app.views.SinglePostModeration = app.views.Feedback.extend({
   },
 
   authorIsCurrentUser: function() {
-    return app.currentUser.authenticated() && this.model.get("author").id == app.user().id;
+    return app.currentUser.authenticated() && this.model.get("author").id === app.user().id;
   },
 
   destroyModel: function(evt) {
diff --git a/app/assets/javascripts/app/views/tag_following_list_view.js b/app/assets/javascripts/app/views/tag_following_list_view.js
index f1413ffea7b56a1f0dff8b674ef67a160bbd5402..dd05875e44efc93ef1f648e631df77e06b706e62 100644
--- a/app/assets/javascripts/app/views/tag_following_list_view.js
+++ b/app/assets/javascripts/app/views/tag_following_list_view.js
@@ -41,7 +41,7 @@ app.views.TagFollowingList = app.views.Base.extend({
     });
 
     this.$("input").bind('keydown', function(evt){
-      if(evt.keyCode == 13 || evt.keyCode == 9 || evt.keyCode == 32){
+      if(evt.keyCode === 13 || evt.keyCode === 9 || evt.keyCode === 32){
         evt.preventDefault();
         if( $('li.as-result-item.active').length === 0 ){
           $('li.as-result-item').first().click();
diff --git a/app/assets/javascripts/aspects-dropdown.js b/app/assets/javascripts/aspects-dropdown.js
index ef01bd769fb2b65496e8123a3860ba934924c86e..6c1ea03bcc06ed17eaa87e90f6e4048693d9a019 100644
--- a/app/assets/javascripts/aspects-dropdown.js
+++ b/app/assets/javascripts/aspects-dropdown.js
@@ -23,9 +23,9 @@ var AspectsDropdown = {
         message = Diaspora.I18n.t("aspect_dropdown.stopped_sharing_with", {name: dropdown.data('person-short-name')});
         Diaspora.page.flashMessages.render({success: true, notice: message});
       }
-    } else if (selectedAspects == allAspects) {
+    } else if (selectedAspects === allAspects) {
       replacement = Diaspora.I18n.t('aspect_dropdown.all_aspects');
-    } else if (number == 1) {
+    } else if (number === 1) {
       button.addClass(inAspectClass);
       replacement = dropdown.find(".selected").first().text();
       /* flash message prompt */
@@ -40,7 +40,7 @@ var AspectsDropdown = {
     // if we are in the publisher, we add the visibility icon
     if (isInPublisher) {
       var icon = $('#visibility-icon');      
-      if (replacement.trim() == Diaspora.I18n.t('stream.public')) {
+      if (replacement.trim() === Diaspora.I18n.t('stream.public')) {
         icon.removeClass('lock');
         icon.addClass('globe');
       } else {
diff --git a/app/assets/javascripts/clear-form.js b/app/assets/javascripts/clear-form.js
index db97fee952ecc3ae6796e900d06fef0d5600b1f5..0d361f3ac11e9bd0b627798d8b8c5f9311c621ec 100644
--- a/app/assets/javascripts/clear-form.js
+++ b/app/assets/javascripts/clear-form.js
@@ -10,7 +10,7 @@ $.fn.clearForm = function() {
       $(this).attr('checked', false);
     } else if ($(this).is('select')) {
       this.selectedIndex = -1;
-    } else if ($(this).attr('name') == 'photos[]') {
+    } else if ($(this).attr('name') === 'photos[]') {
       $(this).val('');
     }
     $(this).blur();
diff --git a/app/assets/javascripts/helpers/i18n.js b/app/assets/javascripts/helpers/i18n.js
index ece2fd386570ba3b8ab454275b665ef1618f9b16..adcb08c8371dfb94996e8f6c146f83e72076628d 100644
--- a/app/assets/javascripts/helpers/i18n.js
+++ b/app/assets/javascripts/helpers/i18n.js
@@ -6,7 +6,7 @@ Diaspora.I18n = {
     pluralizationKey: function(n) { return this.fallback.pluralizationKey(n); },
     data: {},
     fallback: {
-      pluralizationKey: function(n) { return n == 1 ? "one" : "other"; },
+      pluralizationKey: function(n) { return n === 1 ? "one" : "other"; },
       data: {}
     }
   },
diff --git a/app/assets/javascripts/inbox.js b/app/assets/javascripts/inbox.js
index 758ff5e685b3ba1348c3af26fd0d2c101196b856..6ec1d03dceb40ff208b0007709fb3e56e9da9ead 100644
--- a/app/assets/javascripts/inbox.js
+++ b/app/assets/javascripts/inbox.js
@@ -24,7 +24,7 @@ $(document).ready(function(){
       cBadge.html().replace(/\d+/, function(num){
         num = parseInt(num);
         cBadge.html(parseInt(num)-1);
-        if(num == 1) {
+        if(num === 1) {
           cBadge.addClass("hidden");
         }
       });
diff --git a/app/assets/javascripts/pages/users-getting-started.js b/app/assets/javascripts/pages/users-getting-started.js
index deeb97fdb423eb8b0198fb1d77089b25494277e2..2fed55655a8c6af6c3649b5ba6ba4f672983dd6c 100644
--- a/app/assets/javascripts/pages/users-getting-started.js
+++ b/app/assets/javascripts/pages/users-getting-started.js
@@ -73,7 +73,7 @@ Diaspora.Pages.UsersGettingStarted = function() {
       });
 
     autocompleteInput.bind('keydown', function(evt){
-      if(evt.keyCode == 13 || evt.keyCode == 9 || evt.keyCode == 32){
+      if(evt.keyCode === 13 || evt.keyCode === 9 || evt.keyCode === 32){
         evt.preventDefault();
         if( $('li.as-result-item.active').length === 0 ){
           $('li.as-result-item').first().click();
diff --git a/app/assets/javascripts/view.js b/app/assets/javascripts/view.js
index 33acba38a76f393dd4273527e48a1a8997cc40a0..991b7d489918e7c620131c595f9ff0932f03d084 100644
--- a/app/assets/javascripts/view.js
+++ b/app/assets/javascripts/view.js
@@ -38,7 +38,7 @@ var View = {
           $(this).attr('checked', false);
         } else if ($(this).is('select')) {
           this.selectedIndex = -1;
-        } else if ($(this).attr('name') == 'photos[]') {
+        } else if ($(this).attr('name') === 'photos[]') {
           $(this).val('');
         }
         $(this).blur();
diff --git a/app/assets/javascripts/widgets/lightbox.js b/app/assets/javascripts/widgets/lightbox.js
index f2f008fad9023e2d0add2141cb2b8dc8485a531f..461be1d0ee21b34809ea6d28d2472285696332f6 100644
--- a/app/assets/javascripts/widgets/lightbox.js
+++ b/app/assets/javascripts/widgets/lightbox.js
@@ -130,7 +130,7 @@ jQuery.fn.center = (function() {
           "data-full-photo": image.attr("data-full-photo")
         });
 
-        if(image.attr("data-full-photo") == imageUrl) {
+        if(image.attr("data-full-photo") === imageUrl) {
           imageThumb = thumb;
         }
 
diff --git a/app/assets/javascripts/widgets/notifications-badge.js b/app/assets/javascripts/widgets/notifications-badge.js
index bb2ec580d78eb478013d2cf7e513e62b41e6cdf1..fc1b3d30bfb19f87bcdd5a2fa42e8fb17c7fb465 100644
--- a/app/assets/javascripts/widgets/notifications-badge.js
+++ b/app/assets/javascripts/widgets/notifications-badge.js
@@ -100,7 +100,7 @@
       $('.notifications').scroll(function() {
         var bottom = $('.notifications').prop('scrollHeight') - $('.notifications').height();
         var currentPosition = $('.notifications').scrollTop();
-        isLoading = ($('.loading').length == 1);
+        isLoading = ($('.loading').length === 1);
         if (currentPosition + 50 >= bottom && notificationsLoaded <= self.notifications.length && !isLoading) {
             $('.notifications').addClass("loading");
             ++currentPage;
diff --git a/app/assets/javascripts/widgets/notifications.js b/app/assets/javascripts/widgets/notifications.js
index 59c6f78f6c2e807d62877afaa9fcc7f21eb74ec5..3a0b5a099a641e95bceb37e6e39dab1405de04ec 100644
--- a/app/assets/javascripts/widgets/notifications.js
+++ b/app/assets/javascripts/widgets/notifications.js
@@ -84,7 +84,7 @@
       var itemID = data["guid"];
       var isUnread = data["unread"];
       self.notificationMenu.find('.read,.unread').each(function() {
-        if ( $(this).data("guid") == itemID ) {
+        if ( $(this).data("guid") === itemID ) {
           if ( isUnread ) {
             self.notificationMenu.find('a#mark_all_read_link').removeClass('disabled');
             self.setUpUnread( $(this) );
diff --git a/app/assets/javascripts/widgets/timeago.js b/app/assets/javascripts/widgets/timeago.js
index deb233afcc33673a990d8d580eda64a42dbbc12d..dcb680864e9d37771d150be53da84877670f0409 100644
--- a/app/assets/javascripts/widgets/timeago.js
+++ b/app/assets/javascripts/widgets/timeago.js
@@ -11,7 +11,7 @@
         $.timeago.settings.lang = Diaspora.I18n.language;
         $.timeago.settings.strings[Diaspora.I18n.language] = {};
         $.each($.timeago.settings.strings["en"], function(index) {
-          if(index == "numbers") {
+          if(index === "numbers") {
             $.timeago.settings.strings[Diaspora.I18n.language][index] = [];
           }
           else {
diff --git a/config/jshint.yml b/config/jshint.yml
index 571c0c100cda9dc1e9a87fc759a3a07f6ca93f6e..67ca0ca149f20418e38d17ca3d29fd0aac7835b7 100644
--- a/config/jshint.yml
+++ b/config/jshint.yml
@@ -10,7 +10,7 @@ options:
   bitwise:    false
   camelcase:  false
   curly:      false
-  eqeqeq:     false
+  eqeqeq:     true
   forin:      true
   freeze:     true
   immed:      true
diff --git a/spec/javascripts/app/views/help_view_spec.js b/spec/javascripts/app/views/help_view_spec.js
index a20f60e76c5c31cd59baab37222f4ecb266c7e55..9561f998f33fcfe632cc764879dd1a069f63a31d 100644
--- a/spec/javascripts/app/views/help_view_spec.js
+++ b/spec/javascripts/app/views/help_view_spec.js
@@ -14,7 +14,7 @@ describe("app.views.Help", function(){
     });
 
     it('should initially show getting help section', function(){
-      expect(this.view.$el.find('#faq').children().first().data('template') == 'faq_getting_help').toBeTruthy();
+      expect(this.view.$el.find('#faq').children().first().data('template')).toBe('faq_getting_help');
     });
 
     it('should show account and data management section', function(){
@@ -39,7 +39,7 @@ describe("app.views.Help", function(){
 
     it('should show posts and posting section', function(){
       this.view.$el.find('a[data-section=posts_and_posting]').trigger('click');
-      expect(this.view.$el.find('#faq').children().first().data('template') == 'faq_posts_and_posting').toBeTruthy();
+      expect(this.view.$el.find('#faq').children().first().data('template')).toBe('faq_posts_and_posting');
     });
 
     it('should show private posts section', function(){
@@ -69,17 +69,17 @@ describe("app.views.Help", function(){
 
     it('should show sharing section', function(){
       this.view.$el.find('a[data-section=sharing]').trigger('click');
-      expect(this.view.$el.find('#faq').children().first().data('template') == 'faq_sharing').toBeTruthy();
+      expect(this.view.$el.find('#faq').children().first().data('template')).toBe('faq_sharing');
     });
 
     it('should show tags section', function(){
       this.view.$el.find('a[data-section=tags]').trigger('click');
-      expect(this.view.$el.find('#faq').children().first().data('template') == 'faq_tags').toBeTruthy();
+      expect(this.view.$el.find('#faq').children().first().data('template')).toBe('faq_tags');
     });
 
     it('should show keyboard shortcuts section', function(){
       this.view.$el.find('a[data-section=keyboard_shortcuts]').trigger('click');
-      expect(this.view.$el.find('#faq').children().first().data('template') == 'faq_keyboard_shortcuts').toBeTruthy();
+      expect(this.view.$el.find('#faq').children().first().data('template')).toBe('faq_keyboard_shortcuts');
     });
 
     it('should show miscellaneous section', function(){
diff --git a/spec/javascripts/helpers/mock-ajax.js b/spec/javascripts/helpers/mock-ajax.js
index fd8aa2f6585467fa63faa2d7cdf1f8485190787a..640287f8ebbc2a73acd2fab605859eeb272429e5 100644
--- a/spec/javascripts/helpers/mock-ajax.js
+++ b/spec/javascripts/helpers/mock-ajax.js
@@ -238,7 +238,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
             url_to_match(requests[i])) {
             matching_requests.push(requests[i]);
         } else {
-          if (requests[i].url == url_to_match) {
+          if (requests[i].url === url_to_match) {
             matching_requests.push(requests[i]);
           }
         }
diff --git a/spec/javascripts/osmlocator-spec.js b/spec/javascripts/osmlocator-spec.js
index fbb92a120ae16f34fe7596632508646c74ab4b0e..cc982e2bba0d0294cac464aa1d46e904ce4b4b29 100644
--- a/spec/javascripts/osmlocator-spec.js
+++ b/spec/javascripts/osmlocator-spec.js
@@ -8,7 +8,7 @@ describe("Locator", function(){
   };
 
   $.getJSON = function(url, myCallback){
-    if(url == "https://nominatim.openstreetmap.org/reverse?format=json&lat=1&lon=2&addressdetails=3")
+    if(url === "https://nominatim.openstreetmap.org/reverse?format=json&lat=1&lon=2&addressdetails=3")
     {
       return myCallback({ display_name: 'locator address' });
     }