2016-12-20 5 views
0

BrowserStack을 사용하여 테스트 자동화를 실행하고 있습니다. 사이트에 'commonCapabilities'를 설정하는 구성 예제가 있습니다.일부는 Browserstack에서이 JavaScript를 루프에 대해 설명 할 수 있습니까?

나는 이것이 기본 JS라는 것을 알고 있지만이 for 루프 내에서 이중 파이프는 무엇을 사용합니까?

// Code to support common capabilities 
exports.config.multiCapabilities.forEach(function(caps){ 
    for(var i in exports.config.commonCapabilities) caps[i] = caps[i] || exports.config.commonCapabilities[i]; 
}); 

전체 구성은 :

for(var i in exports.config.commonCapabilities) { 
    caps[i] = (caps[i] || exports.config.commonCapabilities[i]); 
} 

가 변환 될 수 있으면 caps[i]을 반환 의미

https://www.browserstack.com/automate/protractor

exports.config = { 
    'seleniumAddress': 'http://hub-cloud.browserstack.com/wd/hub', 

    'commonCapabilities': { 
    'browserstack.user': 'xxxx', 
    'browserstack.key': 'xxxx' 
    }, 

    'multiCapabilities': [{ 
    'browserName': 'Chrome' 
    },{ 
    'browserName': 'Safari' 
    },{ 
    'browserName': 'Firefox' 
    },{ 
    'browserName': 'IE' 
    }] 
}; 

// Code to support common capabilities 
exports.config.multiCapabilities.forEach(function(caps){ 
    for(var i in exports.config.commonCapabilities) caps[i] = caps[i] || exports.config.commonCapabilities[i]; 
}); 
+1

다음을보십시오. http://stackoverflow.com/questions/2802055/what-does-the-construct-x-x-y-mean – G0dsquad

답변

0

그것은 더 쉽게과 같이 읽을 표현입니다 사실로; 그렇지 않으면 exports.config.commonCapabilities[i]을 반환하십시오. caps[i]이 정의되지 않은 경우 false 값이므로 변수를 exports.config.commonCapabilities[i]으로 설정합니다. 그것은 각각이 정의되어 있는지 확인하는 방법입니다. 그렇지 않으면 표준 설정으로 대체됩니다.

0

이 부분은 caps[i] = caps[i] || exports.config.commonCapabilities[i]이며, caps[i]이 정의되지 않은 경우 (또는 null, false, 0, NaN, ""(거짓 값이 아님)) caps[i] = exports.config.commonCapabilities[i]이 실행되는 경우 기본적으로 표시됩니다. 예

:

if(x){/*nothing as it is already assigned*/} else {x = "value"} 
첫번째 값이 거짓이면

와 동일한 기능을

var x = x || "value" 

, 상기 제 2 값을 확인한다. true이면 true를 반환하고 false이면 false를 반환합니다. 첫 번째 값이 true이면 두 번째 값과 상관없이 항상 true를 반환합니다. here