pmingione Posted January 10, 2013 Share Posted January 10, 2013 Hi All, I've recently encountered this line of javaScript code. return (controlName.attr('type') || controlName[0].tagName).toLowerCase(); I haven't ever seen this structure before. Can anybody explain it to me. I am confused as to what the or ( || ) is doing. One of the two strings ( either controlName.attr('type') or controlName[0].tagName) is being processed by the toLowerCase() library function. But I am unsure of what the procedure is. If the object has both a type attribute and a tag name then what is actually being returned? Thanks PMingione Link to comment Share on other sites More sharing options...
jeffman Posted January 10, 2013 Share Posted January 10, 2013 (edited) The || operator means "or." If the object on the left side of || has a value or evaluates to TRUE, then that object will be returned. Otherwise, the object on the right will be evaluated the same way. In this case, if the object has a type attribute, then the value of that attribute will be returned in lower case. If it doesn't, then the tagName will be returned in lower case. I think it's really testing whether controlName is a single element or a collection of elements, and I guess it's working with form inputs. If the object is just one input, it will have a type. If it's a collection, the test returns the tagName of the first element in the collection. So maybe controlName was constructed by getting the child elements of something like a form? Edited January 10, 2013 by Deirdre's Dad Link to comment Share on other sites More sharing options...
thescientist Posted January 10, 2013 Share Posted January 10, 2013 this is an example of basic boolean (true/false, on/off) logic in action. basically, it is going to attempt to evaluate the first expression controlName.attr("type') assuming that controlName.attr('type') returns any sort of truthy value, then that value will be used. if not, then the next expression controlName[0].tagName will be evaluated in the same way. whichever expression evaluate as thruthy first, will have toLowerCase() called upon it and then returned. Link to comment Share on other sites More sharing options...
pmingione Posted January 10, 2013 Author Share Posted January 10, 2013 Thank you all for the explainations. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now