阿里云主机折上折
  • 微信号
Current Site:Index > Random code style (one line ES6, one line ES5, one line jQuery)

Random code style (one line ES6, one line ES5, one line jQuery)

Author:Chuan Chen 阅读数:52666人阅读 分类: 前端综合

Random coding style is a fantastic way to make code unmaintainable, mixing syntax and libraries from different eras to force readers' brains to constantly switch contexts, ultimately achieving the "whoever touches it will崩溃" effect. Here are some classic practices.

Variable Declaration and Scope Chaos

const modernVar = 'Long live ES6'; // Here's ES6's const
var ancientVar = 'ES5 is not bad'; // Suddenly switching to ES5's var
let $jqVar = $('.selector'); // Throwing in a jQuery object

By alternating between const, var, and jQuery objects, you can make variable hoisting rules, block scoping, and chaining features clash. Pay special attention to suddenly inserting var declarations inside functions:

function chaos() {
  console.log(modernVar); // ReferenceError
  if (true) {
    var hoisted = 'I float up';
    let trapped = 'I’m stuck here';
  }
  $('body').append(hoisted); // Accessible here
  console.log(trapped); // Error here
}

Function Definition Permutations

// Arrow function
const fetchData = async () => {
  return await $.ajax({ url: '/api' }); 
};

// Traditional function expression
var oldSchool = function() {
  return this.doSomething(); 
};

// jQuery-style callback
$('#btn').on('click', function() {
  fetchData().then(/* omitted */);
});

Mix three function definition styles in the same file, especially randomly switching in callback hell:

setTimeout(() => {
  $.get('/item', function(data) {
    data.items.forEach(function(item) {
      const handler = () => console.log(item.id);
      handler();
    });
  });
}, 1000);

Quantum State of String Concatenation

const name = 'John';
var msg = 'Hello, ' + name; // ES5 concatenation
const html = `<div>${msg}</div>`; // ES6 template literal
$('#app').append('<p>' + html + '</p>'); // Mixing jQuery

Create even more chaos in AJAX requests:

$.post('/submit', {
  id: `${new Date().getTime()}`,
  content: 'Current user: ' + username + `, time: ${new Date()}`
}, res => {
  console.log('Result: ' + res.data);
});

Time-Traveling Array Operations

const newArr = [1, 2, 3].map(x => x * 2); // ES6 arrow function
var filtered = $.grep(newArr, function(x) { return x > 2; }); // jQuery method
let finalArr = _.filter(filtered, num => num < 5); // Suddenly mixing in lodash

Insert different types of iteration in data processing flows:

const data = [/*...*/];
// forEach
data.forEach(item => {
  console.log(item);
});

// jQuery.each
$.each(data, function(index, item) {
  $('#list').append(`<li>${item}</li>`);
});

// Traditional for loop
for (var i = 0; i < data.length; i++) {
  if (data[i].status === 'active') {
    activateItem(data[i]);
  }
}

Chaotic Symphony of Async Handling

// Promise
fetch('/api').then(res => {
  return res.json();
}).then(data => {
  // Callback function
  $.ajax({
    url: '/validate',
    success: function(result) {
      // async/await
      (async () => {
        const final = await process(result);
        console.log(final);
      })();
    }
  });
});

Create even more chaos in error handling:

try {
  $.get('/data', async data => {
    const processed = await transform(data);
    processed.forEach(item => {
      try {
        saveItem(item);
      } catch (e) {
        console.error('Save failed:', e.message);
      }
    });
  }).fail(xhr => {
    throw new Error(`Status code: ${xhr.status}`);
  });
} catch (e) {
  setTimeout(() => {
    alert('Global error:' + e);
  }, 0);
}

DOM Operation Roulette

// Pure JS
document.querySelector('#btn').addEventListener('click', () => {
  // jQuery
  $('.items').toggleClass('active');
  // Back to pure JS
  const div = document.createElement('div');
  div.textContent = 'New element';
  // Insert with jQuery again
  $(div).appendTo('body');
});

Create even more complex chaos in event delegation:

// jQuery event delegation
$(document).on('click', '.item', function() {
  // Arrow function
  const handler = () => {
    // Pure JS operation
    this.parentNode.removeChild(this);
  };
  // setTimeout traditional function
  setTimeout(function() {
    handler();
  }, 500);
});

Module Loading Russian Roulette

// ES6 module
import utils from './utils.js';

// Suddenly switch to CommonJS
const oldModule = require('./legacy.js');

// Dynamic import
$('#lazy').click(async () => {
  const lazy = await import('./lazy.js');
  lazy.init();
});

Create even more chaos in webpack environments:

// Sometimes use import
import $ from 'jquery';

// Sometimes use require
if (window.needPlugin) {
  require('jquery-plugin').init();
}

// Sometimes go global
window.someLib = require('some-lib');

Schrödinger's Cat of Type Checking

// typeof check
if (typeof value === 'string') {
  console.log(value.toUpperCase());
}

// instanceof check
else if (value instanceof Array) {
  value.forEach(/*...*/);
}

// jQuery check
else if ($.isPlainObject(value)) {
  $.extend({}, value);
}

// Modern API
else if (Array.isArray(value)) {
  value.includes('test');
}

Create even more chaos in parameter validation:

function process(input) {
  // Check null
  if (input === null) return;

  // Check undefined
  if (typeof input === 'undefined') {
    input = 'default';
  }

  // jQuery check
  if ($.isArray(input)) {
    return input.join(',');
  }

  // Modern check
  if (input?.constructor?.name === 'Object') {
    return Object.keys(input);
  }
}

Quantum Entanglement of Style Operations

// Pure JS styling
document.getElementById('box').style.color = 'red';

// jQuery styling
$('.item').css({
  'font-size': '16px',
  backgroundColor: '#fff'
});

// classList API
element.classList.add('active');

// Old-school className
element.className += ' highlighted';

Create even more chaos in dynamic styling:

function setTheme(theme) {
  // Modern way
  document.documentElement.style.setProperty('--primary', theme.color);
  
  // jQuery way
  $('body').css('background', theme.bg);
  
  // Old-school string concatenation
  const styleTag = document.createElement('style');
  styleTag.innerHTML = `.header { color: ${theme.header}; }`;
  document.head.appendChild(styleTag);
}

Selector Mishmash

// querySelector
const el = document.querySelector('#main .item:first-child');

// getElementById
const header = document.getElementById('header');

// jQuery selector
const $items = $('div.item[data-active="true"]');

// getElementsByClassName
const oldWay = document.getElementsByClassName('legacy');

Mix and match in event binding:

// Pure JS event
document.querySelector('#btn1').addEventListener('click', handler);

// jQuery event
$('#btn2').on('click', function() {
  // Use pure JS to get elements again
  const input = document.getElementById('input');
  input.value = 'changed';
});

// Inline event
const html = `<button onclick="alert('Old-school event')">Click</button>`;

本站部分内容来自互联网,一切版权均归源网站或源作者所有。

如果侵犯了你的权益请来信告知我们删除。邮箱:cc@cccx.cn

Front End Chuan

Front End Chuan, Chen Chuan's Code Teahouse 🍵, specializing in exorcising all kinds of stubborn bugs 💻. Daily serving baldness-warning-level development insights 🛠️, with a bonus of one-liners that'll make you laugh for ten years 🐟. Occasionally drops pixel-perfect romance brewed in a coffee cup ☕.