5 ms·
You are correct that variable scoping goes all the way to the top, but nobody is forcing you to create top-level variables with overloaded names like "log". Se
by showell30 15y ago
You are correct that variable scoping goes all the way to the top, but nobody is forcing you to create top-level variables with overloaded names like "log". Seriously, if you have a file that uses log files and logarithms, just take some care to distinguish the concepts. Use "log_file" for log files; use "logarithm" or "Math.log" for inverse exponentation.
- xnxn 15y ago> Use "log_file" for log files; use "logarithm" or "Math.log" for inverse exponentation. Just clarifying; are you actually suggesting this, or was that sarcasm?
- showell30 15y agoIt's a serious suggestion. Instead of introducing four top-level variables (log, sin, cos, and tan), just introduce one (Math) that wouldn't possibly conflict with a local.
- the_mitsuhiko 15y agoThe CoffeeScript sourcecode itself does not advocate it. It uses functions named like 'last', 'starts', 'ends', 'extend' etc.
- showell30 15y agoYou are correct about "last", "start's, etc., but there are also good examples in the CS sourcecode of easily avoiding naming conflicts with a sensible naming convention: browser.coffee:CoffeeScript = require './coffee-script' coffee-script.coffee:{Lexer,RESERVED} = require './lexer' coffee-script.coffee: {Module} = require 'module' command.coffee:{EventEmitter} = require 'events' grammar.coffee:{Parser} = require 'jison' lexer.coffee:{Rewriter, INVERSES} = require './rewriter' nodes.coffee:{Scope} = require './scope' nodes.coffee:{RESERVED} = require './lexer' repl.coffee:{Script} = require 'vm'