Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.javascript > #34329

Re: get average height in an object

From Joao Rodrigues <groups_jr-1@yahoo.com>
Newsgroups comp.lang.javascript
Subject Re: get average height in an object
Date 2017-11-13 00:26 -0200
Organization Aioe.org NNTP Server
Message-ID <ouavs3$199k$1@gioia.aioe.org> (permalink)
References <d68354d4-3603-4201-9c12-a51977c9cf9b@googlegroups.com> <ou8vaq$1l44$1@gioia.aioe.org> <4335673.31r3eYUQgx@PointedEars.de>

Show all headers | View raw


Thomas 'PointedEars' Lahn wrote:
> Joao Rodrigues wrote:
> 
>> JRough wrote:
>>> This seems like it should be easy enough but I don't get any error
>>> messages in the console.  I used jslint and it objects to the console.log
>>> lines
>>
>> This happens because "console" is a browser (and Node.js) feature.
>> However, you may use the /*global*/ directive to "hide" the error in
>> JSLint [1]. For instance:
>>
>> /*global console */
> 
> Too sweeping, unless we are talking about a dedicated debug library.

Useless remark since I wrote about a JSLint warning. It has nothing to 
do with libraries whatsoever. Don't miss the point.

>   
>> As a side note there are better JS linters such as ESLint and JSHint.
> 
> JSHint (which I prefer) will also warn about the undeclared use of
> console.log().

Of course ESLint, JSHint and JSLint warn about undeclared use of 
'console' and its methods. JS Linters 101.

>   
>>> and it says it needs a semi colon after the data  object?
>>
>> Sure does. A semicolon is required in the end of a statement.
> 
> No, in general it is not.  

Nonsense. If semicolons were really optional there would not be a thing 
called "Automatic Semicolon Insertion" (ASI) in the Specification, which 
states:

"§ 11.9 - Automatic Semicolon Insertion
Certain ECMAScript statements (empty statement, let, const, import, and 
export declarations, variable statement, expression statement, debugger 
statement, continue statement, break statement, return statement, and 
throw statement) *must be terminated with semicolons*."

Notice the *must be terminated with semicolons* sentence.

<http://www.ecma-international.org/ecma-262/6.0/#sec-automatic-semicolon-insertion>

Omitting semicolons does not mean they are optional in the Language. 
Look up the Standard and you will not find the term "optional" for 
semicolons.

ECMAScript Language Specification 101.

>>>
>>> const data = {
>>> "Matt" : {  "height" : 174, "weight": 69 },
>>> "Jason" : { "height" : 190, "weight": 103 }
>>> }
>>
>> It lacks a semicolon after the "}".

I was pointing out the position in the OP's source text where they 
reported the JSLint warning. So the comment above is valid in the 
context of the OP's question. You are missing the point.

>   
>> I've refactored the OP's code to:
>>
>> const data = {
>>     "Matt" : {  "height" : 174, "weight": 69 },
>>     "Jason" : { "height" : 190, "weight": 103 }
>> };
>>
>> function calcAvgHeight(data) {
>>     var count = 0, sumHeight = 0;
>>     for (var key in data) {
>>       sumHeight += data[key].height;
>>       count += 1;
>>     }
>>     return sumHeight/count;
>> }
>>   
>> console.log(calcAvgHeight(data)); // 182
> 
> And unsurprisingly this compiles and executes without any semicolons and
> quote characters as well.

It sure does. You are missing the point again.

> 
>> You don't really need to check for data.hasOwnProperty(key) in this
>> case, because data is a simple dictionary-like object [2].
> 
> Nonsense, and your source does not corroborate your claim.
> 
> The value of the “data” constant *variable* here is a reference to an Object
> instance which inherits properties from the object referred to by the
> initial value of Object.prototype

Prototypal inheritance is a known concept by everyone here. However, you 
have *intentionally* omitted the fact that the for...in loop statement 
iterates over enumerable properties of an Object, and that's precisely 
the point here: the hasOwnProperty method is irrelevant for iterating 
the Object referenced by the "data" constant because it hasn't got 
enumerable properties inherited from Object in the OP's example.


> 
> | -> const o = {};
> | <- undefined
> |
> | -> typeof o.toString
> | <- "function"
> |
> | -> o.foo = "bar"
> | <- "bar"
> |
> | -> o
> | <- Object {foo: "bar"}
> |
> | -> o = 42
> | <- |> Uncaught TypeError: Assignment to constant variable.  VM1150:1
>                                                     ^^^^^^^^

You are missing the point again and again.

> 
> Next time, try it out before you post.
>   

Next time, read carefully the OP and subsequent answers before posting 
drivel.

-- 
Joao Rodrigues

Back to comp.lang.javascript | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

get average height in an object JRough <janis.rough@gmail.com> - 2017-11-11 14:57 -0800
  Re: get average height in an object Joao Rodrigues <groups_jr-1@yahoo.com> - 2017-11-12 06:04 -0200
    Re: get average height in an object Joao Rodrigues <groups_jr-1@yahoo.com> - 2017-11-12 06:49 -0200
    Re: get average height in an object John G Harris <niam@jghnorth.org.uk.invalid> - 2017-11-12 13:39 +0000
    Re: get average height in an object Joao Rodrigues <groups_jr-1@yahoo.com> - 2017-11-12 13:40 -0200
      Re: get average height in an object JRough <janis.rough@gmail.com> - 2017-11-13 12:06 -0800
      Re: get average height in an object Joao Rodrigues <groups_jr-1@yahoo.com> - 2017-11-15 13:14 -0200
        Re: get average height in an object "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2017-11-15 22:21 +0100
          Re: get average height in an object "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2017-11-15 22:57 +0100
            Re: get average height in an object Joao Rodrigues <groups_jr-1@yahoo.com> - 2017-11-16 02:46 -0200
              Re: get average height in an object "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2017-11-17 13:06 +0100
    Re: get average height in an object Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2017-11-12 18:24 +0100
      Re: get average height in an object Joao Rodrigues <groups_jr-1@yahoo.com> - 2017-11-13 00:26 -0200
        Re: get average height in an object Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2017-11-13 03:42 +0100
          Re: get average height in an object Joao Rodrigues <groups_jr-1@yahoo.com> - 2017-11-13 01:23 -0200
            Re: get average height in an object Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2017-11-13 14:16 +0100
              Re: get average height in an object Joao Rodrigues <groups_jr-1@yahoo.com.br> - 2017-11-13 14:20 -0300
                Dictionary-like objects (was: get average height in an object) Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2017-11-13 19:56 +0100
                Re: Dictionary-like objects Joao Rodrigues <groups_jr-1@yahoo.com.br> - 2017-11-13 20:26 -0200
                Re: Dictionary-like objects Julio Di Egidio <julio@diegidio.name> - 2017-11-13 15:48 -0800
                Re: Dictionary-like objects Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2017-11-15 02:55 +0100
                Re: Dictionary-like objects Joao Rodrigues <groups_jr-1@yahoo.com> - 2017-11-15 12:30 -0200
                Re: Dictionary-like objects John G Harris <niam@jghnorth.org.uk.invalid> - 2017-11-15 15:59 +0000
        Re: get average height in an object JRough <janis.rough@gmail.com> - 2017-11-13 12:08 -0800
      Re: get average height in an object John G Harris <niam@jghnorth.org.uk.invalid> - 2017-11-13 10:17 +0000
      Re: get average height in an object JRough <janis.rough@gmail.com> - 2017-11-13 12:07 -0800
  Re: get average height in an object "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2017-11-12 11:00 +0100
    Re: get average height in an object "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2017-11-12 11:15 +0100
    Re: get average height in an object JRough <janis.rough@gmail.com> - 2017-11-13 12:28 -0800

csiph-web