var RVIPath = RVIPath || {};
-
I am looking through JavaScript and searching the web to try to learn what it is doing. I see this as the first line of text. var RVIPath = RVIPath || {}; I know the || is a logical operator for OR. But the rest makes no sense to me.
-
I am looking through JavaScript and searching the web to try to learn what it is doing. I see this as the first line of text. var RVIPath = RVIPath || {}; I know the || is a logical operator for OR. But the rest makes no sense to me.
I'm not sure what you're looking at. But what that does is assigns a new blank object ( {} ) to that variable if it didn't previously exist. (Actually, it also does it if that variable contains 0, false, an empty string, null or possibly an empty object or array, as well as undefined. But I'm sure its purpose is to ensure it is assigned to something before further processing.)
-
I'm not sure what you're looking at. But what that does is assigns a new blank object ( {} ) to that variable if it didn't previously exist. (Actually, it also does it if that variable contains 0, false, an empty string, null or possibly an empty object or array, as well as undefined. But I'm sure its purpose is to ensure it is assigned to something before further processing.)
Thanks Bob. But why the OR operand? Here is the rest of the code: // This function will open a new window with the URL of the Image requested. OpenImageWindow = function (ImageViewer, RVIPath) { if (RVIPath != "XX") { var hgt = screen.height - 20; var wdt = screen.width * .5; var lft = 1100; var window_chrome = "toolbar=no,resizable=yes,height=" + hgt + ",width=" + wdt; cas_window1 = window.open(RVIPath, "NewWindow", window_chrome); cas_ window1.focus(); } } // This function will read thru a subfile and determine if the the Image field has a "Y" in it. // If it does then it will set the field to " " and display the Scanner Images. // If it does not then it sets the field to " " and leaves the URL blank. DisplayScannerImage = function (elementsLength, imgCharField, imgImage, ScannerPath, startingID) { var startpoint = startingID; var next = startpoint; for (var i = 0; i < elementsLength; i++) { var imgtext = document.getElementById(imgCharField + next); var imgUrl = document.getElementById(imgImage + next); if ($(imgtext).text() != 'Y') { $(imgtext).text(' '); $(imgUrl).hide(); } if ($(imgtext).text() == 'Y') { $(imgtext).text(' '); $(imgUrl).attr('src', ScannerPath); } next = next + 1; } }
-
I am looking through JavaScript and searching the web to try to learn what it is doing. I see this as the first line of text. var RVIPath = RVIPath || {}; I know the || is a logical operator for OR. But the rest makes no sense to me.
This relies on the truthyness/falseyness concept in javascript, and the fact that as part of a boolean operation, javascript will coerce things to truthyness or falseyness. Falsey values in javascript are 0, null, undefined So what this code says is "If RVIPath is truthy, assign its value to RVIPath. Otherwise assign an empty object to RVIPath" It is a shorthand equivalent of
var RVIPath = null;
if(RVIPath)
RVIPath = RVIPath;
else
RVIPath = {}; -
Thanks Bob. But why the OR operand? Here is the rest of the code: // This function will open a new window with the URL of the Image requested. OpenImageWindow = function (ImageViewer, RVIPath) { if (RVIPath != "XX") { var hgt = screen.height - 20; var wdt = screen.width * .5; var lft = 1100; var window_chrome = "toolbar=no,resizable=yes,height=" + hgt + ",width=" + wdt; cas_window1 = window.open(RVIPath, "NewWindow", window_chrome); cas_ window1.focus(); } } // This function will read thru a subfile and determine if the the Image field has a "Y" in it. // If it does then it will set the field to " " and display the Scanner Images. // If it does not then it sets the field to " " and leaves the URL blank. DisplayScannerImage = function (elementsLength, imgCharField, imgImage, ScannerPath, startingID) { var startpoint = startingID; var next = startpoint; for (var i = 0; i < elementsLength; i++) { var imgtext = document.getElementById(imgCharField + next); var imgUrl = document.getElementById(imgImage + next); if ($(imgtext).text() != 'Y') { $(imgtext).text(' '); $(imgUrl).hide(); } if ($(imgtext).text() == 'Y') { $(imgtext).text(' '); $(imgUrl).attr('src', ScannerPath); } next = next + 1; } }
fellathedog wrote:
But why the OR operand?
It's a shorthand way of saying:
if (RVIPath != NULL)
RVIPath = RVIPath;
else
RVIPath = new object;
// where else can be taken to mean or else// or in optimized form
if (RVIPath == NULL)
RVIPath = new object;One of these days I'm going to think of a really clever signature.
-
fellathedog wrote:
But why the OR operand?
It's a shorthand way of saying:
if (RVIPath != NULL)
RVIPath = RVIPath;
else
RVIPath = new object;
// where else can be taken to mean or else// or in optimized form
if (RVIPath == NULL)
RVIPath = new object;One of these days I'm going to think of a really clever signature.
We had a missionary from Japan Sunday at church that said "the Japaneese language was created by the devil", in reference to it being hard to learn. Coming from a very safe comfortable environment to the web sometimes makes me think the same about JavaScript. I will learn this and be looking back and laughing at this comment. Thanks.
-
We had a missionary from Japan Sunday at church that said "the Japaneese language was created by the devil", in reference to it being hard to learn. Coming from a very safe comfortable environment to the web sometimes makes me think the same about JavaScript. I will learn this and be looking back and laughing at this comment. Thanks.
-
fellathedog wrote:
But why the OR operand?
It's a shorthand way of saying:
if (RVIPath != NULL)
RVIPath = RVIPath;
else
RVIPath = new object;
// where else can be taken to mean or else// or in optimized form
if (RVIPath == NULL)
RVIPath = new object;One of these days I'm going to think of a really clever signature.
-
I don't know where the NULL comes from there. It is shorthand for
if(!RVIPath) RVIPath = {};
If RVIPath is assigned, but set to something which evaluates to false, it will be reassigned.
Which is shorthand for
if(RVIPath == NULL) RVIPath = {};
The expression
!object
meansobject equals NULL
.// the expression
if(!RVIPath)
// is shorthand for
if(!(RVIPath == NULL))
// or
if(RVIPath != NULL)One of these days I'm going to think of a really clever signature.
-
Which is shorthand for
if(RVIPath == NULL) RVIPath = {};
The expression
!object
meansobject equals NULL
.// the expression
if(!RVIPath)
// is shorthand for
if(!(RVIPath == NULL))
// or
if(RVIPath != NULL)One of these days I'm going to think of a really clever signature.
-
Javascript is loosely typed. There's no guarantee that RVIPath was of type 'object' before arriving at this statement, and there are various other values it could have which would evaluate to 'false'.
-
Which is shorthand for
if(RVIPath == NULL) RVIPath = {};
The expression
!object
meansobject equals NULL
.// the expression
if(!RVIPath)
// is shorthand for
if(!(RVIPath == NULL))
// or
if(RVIPath != NULL)One of these days I'm going to think of a really clever signature.
I've gotten in the habit of doing !object with javascript because it is the least like any other programming language. Getting into the details of == and === in javascript is just too much of a PITA.
Curvature of the Mind now with 3D
-
I've gotten in the habit of doing !object with javascript because it is the least like any other programming language. Getting into the details of == and === in javascript is just too much of a PITA.
Curvature of the Mind now with 3D
-
I have been doing that for nearly 30 years since I first read Kernighan & Ritchie[^]. I don't find Javascript that different, syntactically, from C or Java.
One of these days I'm going to think of a really clever signature.
Funny, it must be one of my handicaps from learning C++ before C. I think the vogue at the time was to avoid shortcuts like that and avoid shortcuts like if (!x) for pointers.
Richard MacCutchan wrote:
I don't find Javascript that different, syntactically, from C or Java.
Once I got into the details of it, the common syntax made things more complicated for me than if it was more foreign. When I read javascript now every time I see x != null instead of !x or x !== null, I immediately leap to the conclusion that the author is still thinking that everything works like C# and there are probably subtle bugs lurking in the code. Using the full on javascript style is a message to my future self that the code was written when I better understood the way javascript works.
Curvature of the Mind now with 3D